我正在尝试为我们拥有的供应商的 C++ 库编写 Python 绑定。我正在继续前进,但这很痛苦(部分原因是我们没有图书馆的源代码)。
现在,gcc(4.4.4)抱怨一些它找不到的异常类:
Load library for "FOO_Sessions" failed, the system error message is "/home/djc/foo/lib/libFOO_Sessions.so: undefined symbol: _ZTIN3foo4some22SomeExceptionE"
但是,我在 libFOO_Elsewhere 中找到了 _ZTIN3foo4some22SomeExceptionE(使用 objdump -x),它可以在同一个 /home/djc/foo/lib/ 目录中找到,并且已经使用编译器调用上的 -l 开关进行了引用。
LD_DEBUG=all 报告以下内容(感谢 Erik 的建议):
/home/djc/foo/lib/libFOO_Sessions.so: error: symbol lookup error: undefined symbol: _ZTIN3foo4some22SomeExceptionE (fatal)
但是,objdump -p 会为 libFOO_Sessions.so 报告此情况:
Dynamic Section:
NEEDED libFOO_Connections.so
NEEDED libFOO_Session_Base.so
NEEDED libstdc++.so.6
NEEDED libm.so.6
NEEDED libgcc_s.so.1
NEEDED libc.so.6
SONAME libFOO_Sessions.so
libFOO_Elsewhere(包含 _ZTIN3foo4some22SomeExceptionE)不应该也在 libFOO_Sessions 的 NEEDED 条目中吗?