尝试加载opencv库时出现UnsatisfiedLinkError

时间:2017-03-15 21:53:05

标签: android opencv android-ndk

我收到此错误:

  

java.lang.UnsatisfiedLinkError:dlopen failed:库的文件偏移量" libopencv_java3.so" > =文件大小:0> = 0

当我尝试将openCV本机代码与我的java代码链接时。我尝试了很多东西,但没有解决这个错误。请建议我任何解决方案。

Android.mk

OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
ifdef OPENCV_ANDROID_SDK
  ifneq ("","$(wildcard $(OPENCV_ANDROID_SDK)/OpenCV.mk)")
include ${OPENCV_ANDROID_SDK}/OpenCV.mk
  else
include ${OPENCV_ANDROID_SDK}/sdk/native/jni/OpenCV.mk
endif
else
 include C:/opencv-3.2.0-android-sdk/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
endif

LOCAL_MODULE := Sample
LOCAL_LDLIBS += -llog
LOCAL_CFLAGS := $(OPTIMISATIONS)
LOCAL_SRC_FILES := \
Sample/Sample.cpp

的build.gradle

  defaultConfig
        {
            applicationId "com.example.app"
            ndk
                    {
                        moduleName "Sample"
                        abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
                    }
        }

externalNativeBuild {
    ndkBuild {
        path '../../../../../opencv-3.2.0-android-sdk/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk'
        path 'src/main/jni/Android.mk'
    }
}

错误发生在System.loadLibrary(" Sample");

2 个答案:

答案 0 :(得分:1)

我认为您作为 Sample / Sample.cpp 提供的LOCAL_SRC_FILE名称不正确,请检查全名的SRC_FILE名称,例如 com_example_app_Sample.cpp 您的cpp文件。

并检查ndkBuild路径“../../../../../”如果此路径结构不匹配,Opencv.mk也将无法加载。

答案 1 :(得分:1)

此错误表示系统找不到编译库(Sample.so)。您需要确保库位于正确的位置,并且系统知道在哪里找到它 - 我建议确保在build.gradle文件中设置jniLibs.srcDirs。例如,如果图书馆位于' libs'文件夹,你把它放在gradle文件中:

sourceSets {
        main {
           ...
            jniLibs.srcDirs 'libs'