运行时未定义的符号导致编译/链接时间没有错误

时间:2013-03-08 12:43:39

标签: linux gcc dll linker shared-libraries

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

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

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

编辑:

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

0 个答案:

没有答案