-
问题背景:使用ndk-build编译基于opencv的c++库。使用arm64-v8a的手机时,可正常运行。但使用armeabi-v7a的较老设备(Android 5.1)运行时,会直接崩溃,并提示dlopen failed: library “libc++_shared.so” not found。
-
问题研究:使用百度搜索了dlopen failed: library “libc++_shared.so” not found。但是,几乎都是一个答案。并且,该答案是使用cmake编译的。比如:
集成第三so之dlopen failed: library “libc++_shared.so” not found
。
-
问题解决:
3.1 想要下载"libc++_shared.so"时,看到了下载说明中,给出了文件来源。故在本地目录"D:\Android\Sdk\ndk\21.1.6352462\sources\cxx-stl\llvm-libc++\libs"目录下,找到了对应的文件目录。
3.2 把libc++_shared.so拷贝到src\main\jniLibs对应目录下:(arm64-v8a目录下的libc++_shared.so获取方法和armeabi-v7a类似)
APP_STL := c++
_shared
也会报java.lang.UnsatisfiedLinkError:
dlopen
failed
:
library
"
libc
++
_shared
.so" not found
所以解决方法是,在jni下加入一个cpp文件,该文件可以是空白,然后就不抱这个错误了
今天换了台新电脑,安装完环境顺手运行了以前写的项目,结果一脸懵逼,直接崩了。。。(瞬间强迫症就犯了,受不了自己电脑里有错误代码)
看了下日志【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的配置
1.libgnustl
_shared
.so not found 问题
把在libs里新建一个armeabi-v7a。把armeabi里的so文件复制进去。clean项目,重新跑一下,解决!
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.demo.hellowcdb-1/base.apk”],native
Library
Directories=[/data/app/com.demo.hellowcdb-1/lib/arm64, /data/app/com.demo.hellowcdb-1/base.apk!/lib/arm64-v8a, /sys.
使用Android Studio 3.5.3 加 OpenCV 4.2开发项目时出现报错,报错信息如下:
D/OpenCV/StaticHelper: Cannot load
library
"opencv_java4"
W/System.err: java.lang.UnsatisfiedLinkError:
dlopen
failed
:
library
"
libc
++
_shared
.so" ...
2021-09-17 16:58:42.535 19816-19816/com.example.nss E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.nss, PID: 19816
java.lang.UnsatisfiedLinkError:
dlopen
failed
:
library
"
libc
++.so" not found
at java.lang.Runtime.load
Library
0(...