Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 运行时上未定义的符号,在编译/链接时不会导致错误_Linux_Gcc_Dll_Linker_Shared Libraries - Fatal编程技术网

Linux 运行时上未定义的符号,在编译/链接时不会导致错误

Linux 运行时上未定义的符号,在编译/链接时不会导致错误,linux,gcc,dll,linker,shared-libraries,Linux,Gcc,Dll,Linker,Shared Libraries,我在Google上搜索了一下,也有一些关于StackOverFlow的主题,但它们没有回答主要问题:为什么有时候,在LINUX上的GCC下(我指的是LINUX,因为在MinGW上,它不使用相同的代码),应用程序编译并与其他库正确链接,没有任何错误,然后,在执行时,是否抛出未定义的符号 为什么在编译/链接时没有抛出这个未定义的符号 链接器接受库和代码的原因是什么,即使尚未定义此类函数?为什么仅在执行期间检测到此问题 编辑: 例如,我在类a的头文件上有play()方法,但我从未实现过::play()

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

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

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

编辑:


例如,我在类a的头文件上有play()方法,但我从未实现过::play()。当从另一个项目文件调用此函数时,由于没有实现::play(),该文件链接到定义了类A的初始库,因此不会在应该的时候给我任何未定义的符号错误。稍后,在执行时,应用程序在显式加载库时崩溃,例如,我得到的错误字符串是“undefined symbol play”。很奇怪

你能给出你收到的准确的错误消息吗?听起来你的链接器使用了一个你的操作系统没有的动态库。错误消息和链接命令也可能有用。您的意思是排除dlopen?所有这些库都是我自己编译的库。例如,我在类a的头文件上有play()方法,但我从未实现过::play()。当从另一个项目文件调用此函数时,由于没有实现::play(),该文件链接到定义了类A的初始库,因此不会在应该的时候给我任何未定义的符号错误。稍后,在执行时,应用程序在显式加载库时崩溃,例如,我得到的错误字符串是“undefined symbol play”。很奇怪。。。