「已注销」 2021-02-11 17:13 采纳率: 0%
浏览 98

使用clang++编译器,报错“Undefined Symbols”,如何解决?

编译一个代码后得到这样一个错误。

 


 

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中的函数定义编译器看不见吗?网上好像也没有解决问题的其他信息,希望了解的大佬尽快帮帮忙。

  • 写回答

1条回答 默认 最新

  • 幻灰龙 2021-02-12 13:02
    关注

    请提供源代码。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable