Android dlopen失败:找不到符号"__cxa“U最终确定”;引用为/system/lib/libdl.so“;
在安卓6之前,我们有一个工作版本的应用程序,它是用Qt安卓编写的,从Nexus设备中的安卓6开始,我们看到了奇怪的错误Android dlopen失败:找不到符号"__cxa“U最终确定”;引用为/system/lib/libdl.so“;,android,c++,qt,android-ndk,cross-compiling,Android,C++,Qt,Android Ndk,Cross Compiling,在安卓6之前,我们有一个工作版本的应用程序,它是用Qt安卓编写的,从Nexus设备中的安卓6开始,我们看到了奇怪的错误 dlopen失败:找不到“/system/lib/libdl.so”引用的符号“\uu cxa\u finalize” 和应用程序崩溃 objdump -T ourlibrary.so ... 00000000 DF *UND* 00000000 __cxa_finalize ... 使用-lc标志进行测试,以便链接libc.so,无法帮助,没有相同的问题 构建时
dlopen失败:找不到“/system/lib/libdl.so”引用的符号“\uu cxa\u finalize”
和应用程序崩溃
objdump -T ourlibrary.so
...
00000000 DF *UND* 00000000 __cxa_finalize
...
使用-lc
标志进行测试,以便链接libc.so,无法帮助,没有相同的问题
构建时的其他从属库:libgnustl\u共享。因此
为了欺骗编译器,我们添加了
extern "C" int __cxa_finalize(void*); // { empty body somewhere in .cpp file }
没有帮助,有人能指出问题吗?
注意:在Android 6(棉花糖)之前,这是完全有效的
UPD1:api版本android-9
,体系结构arm
,qt-android编译armv5
,工具链版本4.9
UPD2:其他一些库正在显示glibc版本
00000000 w DF*UND*00000000 GLIBC\u 2.2.5\u cxa\u finalize
我在运行应用程序时看到了相同的错误。你有:
System.loadLibrary("dl");
在你的代码里的什么地方?如果是这样的话,我做了些什么使我的代码在6上运行,我要补充的是,如果您没有这个显式加载,但是发生了崩溃,那么尽早添加这个显式加载的libdl,然后
try…catch
this exception.removedSystem.loadLibrary(“dl”)
,它开始正常工作