Android 尝试加载opencv库时出现不满意的链接错误

Android 尝试加载opencv库时出现不满意的链接错误,android,opencv,android-ndk,Android,Opencv,Android Ndk,我得到这个错误: java.lang.unsatifiedLinkError:dlopen失败:库“libopencv_java3.so”的文件偏移量>=文件大小:0>=0 当我尝试将openCV本机代码与java代码链接时。我尝试了很多方法,但都没有解决这个错误。请给我建议解决办法 Android.mk OPENCV_INSTALL_MODULES:=on OPENCV_LIB_TYPE:=STATIC ifdef OPENCV_ANDROID_SDK ifneq ("","$(wildc

我得到这个错误:

java.lang.unsatifiedLinkError:dlopen失败:库“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
格雷德尔先生

  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(“示例”)

我认为您指定的本地\u SRC\u文件名为Sample/Sample.cpp不正确,请检查您的cpp文件的SRC\u文件名,并使用全名,如com\u example\u app\u Sample.cpp


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

我认为您指定的本地\u SRC\u文件名为Sample/Sample.cpp不正确,请检查您的cpp文件的SRC\u文件名,并使用全名,如com\u example\u app\u Sample.cpp


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

此错误意味着系统无法找到编译库(Sample.so)。您需要确保库位于正确的位置,并且系统知道在哪里可以找到它-我建议确保在build.gradle文件中设置
jniLibs.srcDirs
。例如,如果库位于“libs”文件夹中,则将其放在gradle文件中:

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

此错误意味着系统无法找到编译库(Sample.so)。您需要确保库位于正确的位置,并且系统知道在哪里可以找到它-我建议确保在build.gradle文件中设置
jniLibs.srcDirs
。例如,如果库位于“libs”文件夹中,则将其放在gradle文件中:

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

如果您想考虑使用CMACHE文件而不是NDKBug,请看,这将引导您从Android应用程序中的CPP代码调用OpenCV代码的惊人示例应用程序。这将引导您进入这个惊人的示例应用程序,在android应用程序中从cpp代码调用opencv代码->如果我将sample.cpp文件放在示例文件夹中,那么SRC_文件名应该是什么?实际上,当您传递命令-javah-d**(输出目录)**-jni时,android将创建头文件**(生成JNI样式的头文件(默认))**-classpath(从中加载类的路径)在terminal中。然后在相同的头文件名上创建.cpp文件。将Android.mk、Application.mk、.h和.cpp文件放在单个文件夹中,并在build.gradle APP_build_脚本和NDK_Application_mk中给出。如您所问,也可以使用示例文件夹。如果我将sample.cpp文件放在示例文件夹中,那么RC_文件名?实际上,当您传递命令-javah-d**(输出目录)**-jni**(生成jni样式的头文件(默认))**-classpath(从中加载类的路径)时,头文件将由android创建在终端中。然后在相同的头文件名上创建.cpp文件。将Android.mk、Application.mk、.h和.cpp文件放在单个文件夹中,并在build.gradle APP_build_脚本和NDK_Application_mk中给出。如您所要求,也可以使用示例文件夹。。