最近,我正在用opencv编写android JNI代码进行图片处理。当我将C++代码移植到JNI时,编译没有错误,但是当我在手机上运行代码时,程序始终崩溃。日志显示

'原因:java.lang.UnsatisfiedLinkError:无法加载库:link_image [1892]:无法加载'libmixed_sample.so'所需的库'libopencv_java.so'(load_library [1094]:未找到库'libopencv_java.so') '。

该错误意味着没有libopencv_java.so库,因此我将.so复制到JNI文件夹并再次运行,并且再次发生相同的运行时错误。

我寻找问题的答案,然后找到“添加

System.loadLibrary(“opencv_java”)

Java代码”可以解决该问题。我尝试了,运行时错误更改为

“原因:java.lang.UnsatisfiedLinkError:无法加载opencv_java:查找库返回null”。

我糊涂了。我搜索并尝试了许多方法来解决此问题,但没有一个可以工作。

有人知道解决方法吗?

非常感谢!

最佳答案

libopencv_java.so库不应位于JNI文件夹中。要从APK自动安装,请将其放在Android项目的libs/armeabi子目录中。诀窍是,如果您的项目具有自定义JNI代码,则将在ndk-build期间清除此目录。因此,您应该添加

LOCAL_PREBUILT_SHARED_LIBRARIES += ocvj

…

include $(CLEAR_VARS)
LOCAL_MODULE:= ocvj
LOCAL_SRC_FILES := $(FOO_PATH)/libopencv_java.so
include $(PREBUILD_SHARED_LIBRARY)

也许您需要添加更多的库。也许您使用armeabi-v7a代替了armeabi。

关于java - Android JNI和OpenCV运行时无法加载库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21949222/

10-12 22:22