OpenCV 2.4.1:UnsatisfiedLinkError

Ars*_*niy 6 java java-native-interface android opencv android-ndk

我有一个Android项目,它有本机代码.在这个原生部分,我使用OpenCV.当我使用OpenCV 2.3.1时,一切都编译好了,但是当我试图切换到版本2.4.1时,我遇到了问题:

它编译没有任何错误,但是当我启动我的应用程序时,由于UnsatisfiedLinkError,它无法加载我的库.

Cannot load library: link_image[1936]:    37 could not load needed library 'libopencv_java.so' for 'mylibrary.so' (load_library[1091]: Library 'libopencv_java.so' not found)
Run Code Online (Sandbox Code Playgroud)

我看到Open CV尝试加载libopencv_java.so,但我不需要它,我不在java代码中使用OpenCV.这个图书馆的大小> 5M.

如何编译而不将此lib添加到项目中?

小智 7

libopencv_java.so除了JNI包装到C++ OpenCV的界面包含了所有的OpenCV的本地代码.
当您使用OpenCV 2.4 for Android构建JNI库时,您可以使用libopencv_java.so(默认选项)动态链接,并通过显式添加此选项将其包含在您的APK或静态链接中:

include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC
include <your path>/OpenCV.mk
Run Code Online (Sandbox Code Playgroud)

  • 这不适合我.例如,默认的opencv adnroid样本#3.见[问题](http://stackoverflow.com/questions/10857301/unable-to-link-native-library-in-opencv-android-sample). (3认同)