Android 尝试加载opencv库时出现不满意的链接错误
我得到这个错误: java.lang.unsatifiedLinkError:dlopen失败:库“libopencv_java3.so”的文件偏移量>=文件大小:0>=0 当我尝试将openCV本机代码与java代码链接时。我尝试了很多方法,但都没有解决这个错误。请给我建议解决办法 Android.mkAndroid 尝试加载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
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中给出。如您所要求,也可以使用示例文件夹。。