我正在尝试将我的本机库链接到java应用程序但是当我尝试运行它时,我得到一个java.lang.UnsatisfiedLinkError
异常,抱怨缺少符号(_ZTVN10__cxxabiv117__class_type_infoE
)
我使用g ++编译共享库,就像任何其他共享库一样。
这是我第一次尝试使用JNI,我无法弄清楚如何正确连接所有内容。
答案 0 :(得分:4)
您可以使用工具链附带的c++filt
可执行文件来解码丢失的符号。然后就是要弄清楚代码的哪一部分没有做它应该做的事情。
nm
可用于列出代码中定义的符号。如果您看到某个符号在同一行上有一个U,则它是未定义的,并且可能导致此错误。传递-E到gcc / g ++会在预处理步骤之后停止编译器,这可能也很有用。
我过去对此错误的原因主要是:
答案 1 :(得分:2)
在没有-Wl,-soname,liblzw_compressor.so
选项的情况下尝试重新链接。如果它工作,我不能告诉你为什么,除了几个月前,我有一个非常相似的未定义符号错误(甚至可能是相同的符号)并放弃我的链接线-Wl
选项修复它。 / p>