2

我一直在谷歌上搜索这个,也有一些关于 StackOverFlow 的主题,但他们没有回答主要问题:为什么有时,在 LINUX 上的 GCC 下(我的意思是 Linux,因为在 MinGW 上它不会发生)相同的代码),应用程序编译并与其他库正确链接,没有任何错误,然后在执行时抛出未定义的符号?

为什么在编译/链接时没有抛出这个未定义的符号?

即使尚未定义此类函数,链接器接受库和代码的原因是什么?为什么只在执行期间检测到这个问题?

编辑:

例如,我在 A 类的头文件中有 play() 方法,但后来我从未实现 A::play()。当从另一个项目文件中调用此函数时,链接到定义 A 类的初始库不会给我任何未定义的符号错误,因为 A::play() 没有实现。稍后,在执行时,应用程序在显式加载库时崩溃,例如,我收到错误字符串“未定义符号播放”。很奇怪...

4

0 回答 0