java.lang.UnsatisfiedLinkError:dlopen失败:找不到“libjni_part.so”引用的符号“camAllocateImage”

时间:2014-11-22 11:19:27

标签: android opencv android-ndk

我想使用带有OpenCV和Camellia库的ndk运行Android应用程序。 编译成功完成但在运行应用程序后,它崩溃了这个日志:

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "camAllocateImage" referenced by "libjni_part.so"...

我的Android.mk文件是:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

include /Path/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_C_INCLUDES +=  /Path/camellia

LOCAL_MODULE    := jni_part
LOCAL_SRC_FILES := jni_part.cpp
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true

LOCAL_LDLIBS    += -llog -ldl -landroid

include $(BUILD_SHARED_LIBRARY)

请问如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在您的Android.mk中,您正在使用动态版本的OpenCV进行链接。解决方案是在动态库上静态链接OpenCV和其他库。它会增加尺寸,但它不会要求用户自己安装OpenCV,这是丑陋的恕我直言。

添加

OPENCV_LIB_TYPE:=STATIC

在包含OpenCV.mk的行之前。我还没有使用过其他库,但是使用.a文件链接也可以使它工作。