Xcode C++ :: Duplicate Symbols for Architecture x86

I am new to Xcode and when I build the following code (an MWE), I get the following error

ld: 3 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

I have three files as following;

main.cpp

#include "B.cpp"
int main() {
  square(5);
  return 0;
}

B.cpp

#include "A.cpp"

void square(int n){
  display(n*n);
}

A.cpp

#include <iostream>
using namespace std;

void display(int num){
  cout<<num;
}

I have tried different methods mentioned on stack overflow like change "Build Active Architecture Only" to "Yes" and some others but the error still persists.


Problem is that main.cpp has included B.cpp and A.cpp . In your build process, you are also compiling B.cpp and A.cpp and trying to link Bo and Ao alongwith main.o .

Linking Bo and Ao causes symbols display and square to be defined multiple times. display is defined 3 times and square defined 2 times.

You just compile and build main.cpp . Do not build A.cpp and B.cpp .

Second way is that make A.cpp and B.cpp to Ah and Bh and functions inline . So, they will be compiled only once.

Third way, do not include B.cpp in main.cpp . Just put function declaration instead of inclusion.

//main.cpp

void square(int);

int main() {
  square(5);
  return 0;
}

Generally, function declarations are put in header files. If that is required in multiple cases, make a header file.

链接地址: http://www.djcxy.com/p/86342.html

上一篇: 在Mac中构建Qt 5.4错误

下一篇: Xcode C ++ ::体系结构x86的重复符号