我使用Clang ++构建一个共享对象。主要功能位于'extern“C”'区块。建筑很好,我可以使用JNA调用这些功能。
当我添加标志“-lstdc ++”(用于使用某些C ++ 11功能)时 - 我遇到了运行时错误:
undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm
我跑
nm target/classes/linux-x86-64/libCloudCryptoLibrary.so |grep init
然后我得到
U _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm
U _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc
0000000000004860 T _init
0000000000024360 T init
当我删除该标志并再次运行nm时,我得到:
U _ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
000000000026b920 b _ZStL8__ioinit
000000000026b9e0 b _ZStL8__ioinit
0000000000004508 T _init
0000000000021000 T init
我能做些什么来纠正它?
答案 0 :(得分:1)
我找到了一个解决方案: 我有一个名为" init"在外部" C"阻止(你可以看到线" 0000000000021000 T init")。 我将其重命名为" initMyClass"问题消失了。