即使 nm 报告存在符号,运行时也会出现符号查找错误

Symbol lookup error at runtime even though nm reports symbol present

我这样构建我的程序:

g++ -std=c++11 myprog.cpp -o myprog -lqpid-proton-cpp

然后我 运行 ./myprog 得到这个错误:

symbol lookup error: ./myprog: undefined symbol: _ZN6proton10event_loop6injectESt8functionIFvvEE

然而,nm 报告符号存在于库中。 . .

nm -D /usr/lib/libqpid-proton-cpp.so | grep _ZN6proton10event_loop6injectESt8functionIFvvEE

。 . .产量:

000000000002f460 T _ZN6proton10event_loop6injectESt8functionIFvvEE

我在这里错过了什么?

您是否验证过,例如,使用 ldd myprog,您查看了正确的共享对象?有可能找到不同的共享对象。