未定义的符号与未定义的引用

Undefined symbol vs undefined reference

提问人:24n8 提问时间:4/25/2022 最后编辑:24n8 更新时间:4/25/2022 访问量:1087

问:

我在这里看到了这篇文章:ld:未定义的符号与ld:未定义的引用,我认为它并没有真正谈论这两个链接器错误之间的区别。

当链接器找不到某物的定义时,我通常会遇到链接器错误(或者我声明了它但忘记定义它),但它似乎具有相同的目的(上面链接帖子中的答案给出了一个似乎与出现时一致的示例,但也许我在这里遗漏了一些微妙之处?),所以我有点困惑。有人可以澄清一下,也许用例子来说明每个在链接过程中何时出现?undefined referenceundefined symbolundefined reference

编辑:我不知道链接器错误的术语可能取决于是否使用 、 等......gnuclang

就我而言,我在使用时看到了错误,错误是undefined symbolclang++

stderr: ld.lld: error: undefined symbol: custom::linear::adapt()

是 的对应物吗?undefined symbolclanggnuundefined reference

C++ 链接器 undefined-reference undefined-symbol

评论

2赞 Some programmer dude 4/25/2022
您是否正在考虑“未定义的引用”(例如 Linux 中的 GNU ld 链接器发出)与“未解析的外部符号”(由 Windows 中的 MSVC 链接器发出)?
0赞 24n8 4/25/2022
@Someprogrammerdude 哦,我以为这些链接器错误术语在不同的链接器中是统一的。我刚刚检查了我的代码库,它使用 clang++ 运行持续集成测试,错误是clang++: error: linker command failed with exit code 1 (use -v to see invocation)stderr: ld.lld: error: undefined symbol: custom::linear::adapt()
0赞 ChrisMM 4/25/2022
这可能是重复的。第一个答案显示同一代码的 GCC 和 MSVC 输出,一个说引用,另一个说符号。我想 clang 也只是使用“符号”
0赞 24n8 4/25/2022
@ChrisMM 和 有区别吗?undefined symbolunresolved external symbol
3赞 drescherjm 4/25/2022
我不认为有什么区别。某些编译器根据所使用的链接器将其称为一个或另一个。

答: 暂无答案