编译一个代码后得到这样一个错误。
Undefined symbols for architecture x86_64:
"A& A::operator<<=<int>(int)", referenced from:
_main in main-fa1586.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个代码包括main.cpp,file.cpp,file.hpp这3个文件,其中main.cpp和file.cpp均有“#include "file.hpp"”。编译指令如下:
clang++ -o main main.cpp file.cpp
我使用的是mac版vscode环境,clang++编译器。发生这个错误后,我仔细检查,发现file.cpp中是包含这个函数的。于是觉得很奇怪,把这个函数的内容拷贝到了main.cpp,重新执行以上编译指令,居然发现编译通过了!我以为会报错,说函数重复定义。然后我把编译指令中的两个文件交换位置,结果仍然如此。我不知道为什么会这样,难道file.cpp中的函数定义编译器看不见吗?网上好像也没有解决问题的其他信息,希望了解的大佬尽快帮帮忙。