我收到此错误:
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");
答案 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'