我想使用带有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)
请问如何解决这个问题?
答案 0 :(得分:0)
在您的Android.mk中,您正在使用动态版本的OpenCV进行链接。解决方案是在动态库上静态链接OpenCV和其他库。它会增加尺寸,但它不会要求用户自己安装OpenCV,这是丑陋的恕我直言。
添加
OPENCV_LIB_TYPE:=STATIC
在包含OpenCV.mk的行之前。我还没有使用过其他库,但是使用.a文件链接也可以使它工作。