2017-03-15 115 views
0

我收到此错误:UnsatisfiedLinkError尝试加载OpenCV库

java.lang.UnsatisfiedLinkError: dlopen failed: file offset for the library "libopencv_java3.so" >= file size: 0 >= 0

当我试图用我的Java代码链接OpenCV的本地代码

。我尝试了很多东西,但没有解决这个错误。请给我建议任何解决方案。

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( “样品”)的发生;

+0

如果你想考虑使用CMakeFiles代替ndkBuild,看http://stackoverflow.com/questions/42821391/unsuisfiedlinkerror-while-trying-to-load-opencv-library,它会将你引导到这个惊人的示例应用程序,从android应用程序中的cpp代码调用opencv代码 - > https://github.com/sengsational/HelloCv –

回答

1

我认为LOCAL_SRC_FILE名字你作为采样给出/ sample.cpp的是不正确的,检查SRC_FILE名称以全名状com_example_app_Sample.cpp您的CPP文件。

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

+0

如果我将sample.cpp文件放在示例文件夹中,那么SRC_FILE名称应该是什么? – MJ123

+0

实际上,当您传递命令时,头文件将由android创建** - javah -d **(输出目录)** - jni **(生成JNI-样式头文件(默认))** -classpath * *(从中加载类的路径)在终端中。然后在相同的头文件名.cpp文件中创建。将Android.mk,Application.mk,.h和.cpp文件放在单个文件夹中,并在build.gradle APP_BUILD_SCRIPT和NDK_APPLICATION_MK中提供。正如你问可以使用示例文件夹也.. – Gowthaman

1

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

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

我已经添加了。 – MJ123

相关问题