Xcode C ++ ::体系结构x86的重复符号
我是Xcode的新手,当我构建下面的代码(MWE)时,出现以下错误
ld:体系结构x86_64的3个重复符号clang:error:linker命令失败,退出代码1(使用-v查看调用)
我有三个文件如下;
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;
}
我已经尝试过在堆栈溢出中提到的不同方法,例如将“仅将构建主动架构”更改为“是”等一些方法,但错误仍然存在。
问题是main.cpp
包含了B.cpp
和A.cpp
。 在你的构建过程中,你也在编译B.cpp
和A.cpp
并试图连接Bo
和Ao
以及main.o
链接Bo
和Ao
会导致符号display
和square
被多次定义。 display
定义3次, square
定义2次。
您只需编译并构建main.cpp
。 不要建立A.cpp
和B.cpp
。
第二种方法是将A.cpp
和B.cpp
为Ah
和Bh
并inline
。 所以,它们只会被编译一次。
第三种方法,不要在main.cpp
包含B.cpp
。 只需放入函数声明而不是包含。
//main.cpp
void square(int);
int main() {
square(5);
return 0;
}
通常,函数声明放在头文件中。 如果这在多个情况下是必需的,则创建一个头文件。
链接地址: http://www.djcxy.com/p/86341.html