我有一个应用程序,它使用 .so 共享库中的 Foo 类。我遇到了在运行时打印的问题



现在,事实证明未处理的符号是用于类 Foo 的构造函数的,问题只是加载了一个旧版本的库,它还不包含 Foo。

我的问题不是关于解决错误(这显然是为了使用正确的库),而是为什么它在运行时 而不是在加载/启动时出现

导致错误的代码行只是实例化了类 Foo 的一个对象,所以我在这里没有使用 dlopen 之类的任何东西,至少没有明确/据我所知。

相反,如果我从加载搜索路径中删除整个库,我会在启动
时收到此错误 :



当加载路径上gcc/libstdc++版本错误时,starup时也会出现错误:



这种“快速失败”行为更可取,我不想先运行我的应用程序很长一段时间,直到我最终意识到它使用了错误的库。
是什么导致加载错误在运行时出现,我怎样才能让它立即出现?

最佳答案

ld.so 的手册页:

关于c++ - 运行时的符号查找错误而不是加载时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32903870/

10-11 22:27
查看更多