Ahm*_*mad 11 c++ xcode clang xcode6
我是Xcode的新手,当我构建以下代码(MWE)时,我收到以下错误
ld:架构x86_64 clang的3个重复符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我有三个文件如下;
main.cpp中
#include "B.cpp"
int main() {
square(5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
B.cpp
#include "A.cpp"
void square(int n){
display(n*n);
}
Run Code Online (Sandbox Code Playgroud)
A.cpp
#include <iostream>
using namespace std;
void display(int num){
cout<<num;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了在堆栈溢出时提到的不同方法,例如将"仅构建活动架构"更改为"是"以及其他一些但错误仍然存在.
dop*_*ime 19
问题是main.cpp包括B.cpp和A.cpp.在你的构建过程中,你也编制B.cpp并A.cpp和尝试链接B.o和A.o非常久远main.o.
链接B.o并A.o导致符号display并square多次定义.display定义3次并square定义2次.
你只需编译和构建main.cpp.不要建立A.cpp和B.cpp.
第二种方式是make A.cppand B.cppto A.h和B.hand functions inline.因此,它们只会被编译一次.
三路,不包括B.cpp在main.cpp.只是把函数声明而不是包含.
//main.cpp
void square(int);
int main() {
square(5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
通常,函数声明放在头文件中.如果在多种情况下需要,请创建一个头文件.
| 归档时间: |
|
| 查看次数: |
40766 次 |
| 最近记录: |