使用多个文件时出现"Undefined symbols for architecture x86_64"错误
"Undefined symbols for architecture x86_64" error when using multiple files
导入标头时出现此错误,找不到原因(此处为C++新手(。
main.cpp:
#include <iostream>
#include <string>
#include "add.h"
using namespace std;
int main()
{
cout << "The addition result is " << myAddition(2,3) << endl;
return 0;
}
添加.cpp:
#include "add.h"
int myAddition(int nb1, int nb2)
{
return nb1+nb2;
}
add.h:
int myAddition(int nb1, int nb2);
当我试图编译main.cpp(使用Atom和OSX10.12.6中的"gpp编译器"插件(时,我得到了以下错误:
体系结构x86_64的未定义符号:"myAddition(int,int(",引用自:_main-a2ca70.o中的mainld:找不到体系结构x86_64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看调用(
它还说:
未捕获回调必须是函数
堆栈跟踪是:
TypeError[ERR_INVALID_CALLBACK]:回调必须是一个函数在五月回调(fs.js:157:9(位于Object.fs.writeFile(fs.js:129:14(位于ChildProcess.child.on(/Users/sessiondel/.atom/packages/gpp编译器/index.js:299:12(在ChildProcess.emit(events.js:182:13(在maybeClose(internal/child_process.js:961:16(位于Socket.stream.Socket.on(internal/child_process.js:380:11(在Socket.eemit(events.js:182:13(在管道处_handle.close[as _onclose](net.js:596:12(
提前感谢!
在C++中,如果你想编译位于多个文件中的一些代码,你必须明确地告诉编译器在哪里可以找到某个函数,在这种情况下是函数add
,所以为了实现这一点,你必须以这种方式在编译器中指定文件:
g++ main.cpp add.cpp
编译完成后,编译器会用编译后的文件生成一个a.out
文件,只需执行./a.out
即可运行。
Atom可能不是c++的IDE,只是试图编译该文件,而c++编译器在object file
(.o扩展名(中找不到函数add。
试试这个,
g++ -c add.cpp
g++ -c main.cpp
g++ add.o main.o -o exe_name
- 与卡特琳娜一起卷曲C++失败并得到"Undefined symbols for architecture x86_64"
- "Undefined symbols for architecture x86_64" 在 SDL 2 (macOS) 中
- cmake: find_package for architecture
- 编译 OpenBLAS C++项目会产生错误"Undefined symbols for architecture x86_64"
- 使用多个文件时出现"Undefined symbols for architecture x86_64"错误
- 无法在 Xcode 中使用 Boost,不断收到"Undefined symbols for architecture"错误
- 将某些功能与 main.cpp 分离时出现"undefined symbols for architecture"错误,该怎么办?
- Xcode 错误:"2 duplicate symbols for architecture x86_64"
- XCode 错误"Undefined symbols for architecture x86_64" C++
- 了解"Undefined symbols for architecture"错误
- 在单独的 c++ 文件中初始化矢量时出现"undefined symbols for architecture"错误
- 链接错误:QtCore.framework/Versions/4/QtCore for Architecture x86
- 在连接阶段诊断"contains undefined reference for architecture"
- 有错误"Undefined symbols for architecture x86_64"和"ld: symbol(s) not found for architecture x86_64"
- "Undefined symbols for Architecture x86_64 "未使用模板,可能存在语法错误
- Xcode 6 上针对目标 C 的错误'Undefined symbols for architecture x86_64 '
- "Undefined symbols for architecture x86_64"尝试包含另一个文件中的功能
- OpenCV 3 的"ld: symbol(s) not found for architecture x86_64"
- XCode 构建失败"undefined Symbols for architecture x86_64"
- Xcode 错误"not found for architecture" 。尝试不使用库的基本C++