2024-01-06 dlopen failed: library “libc++_shared.so”,AS 编译的时候打包ndk里的libc++_shared.so到apk的 lib/目录
最新推荐文章于 2024-05-30 11:51:54 发布
最新推荐文章于 2024-05-30 11:51:54 发布
阅读量
962
一、
提示dlopen failed: library "libc++_shared.so" 然后app闪退
,但系统下明明存在是/system/lib64/libc++_shared.so,chapgpt给的介绍是“可能是Android 上遇到
java.lang.UnsatisfiedLinkError
并提示
dlopen failed: library "libc++_shared.so"
的错误通常意味着应用程序在运行时无法找到或者无法加载
libc++_shared.so
库。即使系统下
/system/lib64/libc++_shared.so
存在,你的应用程序可能也没有权限加载系统目录下的这个库,或者这个库版本与你的应用需要的版本不兼容。”
AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found: needed by /data/app/~~1gp299X7jmJwx3RgrGJ4TQ==/com.hypernano.opencv-vHxGK9mYwZkHdNFg826Mhg==/base.apk!/lib/arm64-v8a/libopencv_calib3d.so in namespace classloader-namespace
01-06 10:28:06.798 3947 3947 E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
二、解决方法,android studio编译app的是包含jni里面的libc++_shared.so,android studio 打包ndk里面的libc++_shared.so到APK 的 lib/目录下的方法
externalNativeBuild {
cmake {
cppFlags ""
arguments "-DANDROID_STL=c++_shared"
然后,设置了C++标准库的路径,并将其包含到头文件路径中。接下来,链接libc++库的路径,并最终将libc++和libc++abi库链接到你的项目中。这样,当你构建项目时,链接器就能够找到并链接libc++库文件,从而解决"libc++_shared.so not found"的错误。它的设计目的是提供一个高性能、可移植的C++标准库实现,支持最新的C++语言标准,并提供了对Android NDK开发的良好支持。首先,确保你的Android NDK环境是正确配置的,并且包含了所需的libc++库文件。
2: adb pull /system/etc/public.libraries.txt [你要保存的目录]4. adb push [public.libraries.txt 所在的路径] /system/etc/3:将你要用的到 XXX.so 加入到 /system/etc/public.libraries.txt。将你要用的到 XXX.so 加入到 /system/etc/public.libraries.txt。
今天换了台新电脑,安装完环境顺手运行了以前写的项目,结果一脸懵逼,直接崩了。。。(瞬间强迫症就犯了,受不了自己电脑里有错误代码)
看了下日志【java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so” not found】找不到库“ libc ++ _ shared.so
Android Studio 配置OpenCV 的时候出现这样的提示 黄色警告libc++_shared.so" not found :
System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
最后自己把OpenCV4.4.0 下载的sdk 直接当成库引入到项目就好了
具体可以参考点击查看OpenCV4.4.0的配置
编译opencv库时,解决了ndk-build方式下,dlopen failed: library "libc++_shared.so" not found。