Xcode C++ :: 体系结构x86_64的重复符号
Xcode C++ :: Duplicate Symbols for Architecture x86_64
我是Xcode的新手,当我构建以下代码(MWE)时,出现以下错误
LD:3 个重复的符号用于建筑x86_64 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
我有三个文件如下;
主.cpp
#include "B.cpp"
int main() {
square(5);
return 0;
}
B.cpp
#include "A.cpp"
void square(int n){
display(n*n);
}
答.cpp
#include <iostream>
using namespace std;
void display(int num){
cout<<num;
}
我已经尝试了堆栈溢出中提到的不同方法,例如将"仅构建活动架构"更改为"是"和其他一些方法,但错误仍然存在。
问题是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
。
第二种方法是使A.cpp
和B.cpp
A.h
,B.h
和功能inline
。因此,它们只会编译一次。
第三种方式,不要在main.cpp
中包含B.cpp
。只需放置函数声明而不是包含。
//main.cpp
void square(int);
int main() {
square(5);
return 0;
}
通常,函数声明放在头文件中。如果在多种情况下需要这样做,请创建一个头文件。
对我来说
,将"无公共块"从"是"更改为"否"(在"目标->构建设置"-">Apple LLVM - 代码生成"下)解决了问题。
在此处输入图像描述
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 使用gcc从静态链接的文件中查找可选符号
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- VC++本机单元测试,找不到调试符号
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 检查TCHAR数组输入是否为带符号整数C++
- 用符号版本替换对函数的所有调用
- 未解析的外部符号_MsiLocateComponentW@12.
- 如何打印boost多精度128位无符号整数
- C++模板函数,用于比较任何无符号整数和有符号整数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号