Android运行时错误-dlopen失败:找不到符号__cxa“结束清理”;引用为;libcryptopp.so“;

Android运行时错误-dlopen失败:找不到符号__cxa“结束清理”;引用为;libcryptopp.so“;,android,android-ndk,linker,runtimeexception,crypto++,Android,Android Ndk,Linker,Runtimeexception,Crypto++,我一直在尝试编译/链接/运行一个使用NDK的Android项目,该项目有两个NDK编译阶段。我已经能够使用GNU libstdc++进行编译,而不包括CryptoPP,这是OpenSSL库加密的一个很好的替代方案。使用CryptoPP,我会收到标题中注明的运行时错误 在编译我的Android NDK项目时,我没有编译器错误,但是在运行时,CryptoPP库在查找符号时遇到问题“\uuuucxa\uend\ucleanup”。我尝试过使用STLport和GNU libstdc++手动重新编译lib

我一直在尝试编译/链接/运行一个使用NDK的Android项目,该项目有两个NDK编译阶段。我已经能够使用GNU libstdc++进行编译,而不包括CryptoPP,这是OpenSSL库加密的一个很好的替代方案。使用CryptoPP,我会收到标题中注明的运行时错误

在编译我的Android NDK项目时,我没有编译器错误,但是在运行时,CryptoPP库在查找符号时遇到问题“\uuuucxa\uend\ucleanup”。我尝试过使用STLport和GNU libstdc++手动重新编译libcryptopp.so文件,结果都是相同的运行时错误。我一直在按照说明书办事。在更改编译器时,我一直在正确地更改应用程序STL

在线查看,这个错误似乎与C++异常处理有关,因此我尝试从Android.mk <强>“LoalAlpCppI+ +=异常”<强>中删除该行,使异常无法启用,但在运行时再次出现相同错误。 我还在JNI的Java端以正确、相反的顺序加载库。加载库(“cryptopp”)在加载另一个自定义库之前出现


我还尝试将stlport_shared.so包含在armeabi/文件夹中,并在cryptopp之前先加载,但出现了相同的错误

同样,我尝试了在LabSub++中使用一个在GNULBSTDC++中编译的库,因为这是一个添加异常处理的C++库,并在Android.mk中包含了对它的引用:强>“LoalLoCfAg++= -LSUPc++”<强> > ListalOnEnguleStistalCudio::LbPuSc++。 有没有人在Android上使用CryptoPP时遇到过类似的问题?如果是这样,您是如何配置makefiles以正确链接库的?最后,你知道为什么这不会在编译过程中导致错误,而且只会在运行时发生吗?完整错误粘贴在下面:


E/dalvikvm(15888):dlopen(“/data/app lib/com.example.test\u app/libcryptopp.so”)失败:dlopen失败:找不到“libcryptopp.so”引用的符号“\uucxa\u end\u cleanu”…嗨,我在使用NDK和STL时遇到了同样的问题,我刚刚解决了这个问题。我发现我的本机库依赖于STL,但Dalvik VM并没有自动从系统中加载它,即使我将它打包到APK文件中。因此,我尝试通过在JAVA文件中添加以下行来加载它:

系统加载库(“stlport_共享”)

其中my Application.mk看起来像:

APP_ABI := armeabi-v7a-hard
APP_STL := stlport_shared

也许它会对你有所帮助

在维基上,在下,ANDROID_STL_LIB(
/opt/ANDROID-ndk-r9/sources/cxx STL/stlport/libs/armeabi/libstlport_shared.so)也被推到了设备上。您是否尝试将
libstlport\u shared.so
包含在您的
armeabi/
文件夹中?此外,没有理由尝试在文件夹中包含静态存档(
*.a
)。“我也尝试过将stlport_shared.so包含在armeabi/文件夹中,并在cryptopp之前先加载,但出现了相同的错误。”是的,也尝试过,同样感谢您的建议!我仍然收到与此丢失的cxa_end_cleanup符号相关的相同运行时错误。您在这里做得怎么样?我在你提供的参考资料中发现了一个错误——Crypto++wiki、交叉编译脚本、Crytpo++补丁和预构建库(遗憾的是,我都写了)。错误在于Crypto++的
GNUMakefile
不包含
ldlibs
LDFLAGS
,因此共享对象缺少对
libstlport\u shared.so
的依赖项。问题现在已经解决,材料也已更新。ping。。。你过得怎么样?