我正在C++中使用OpenCV和JsonCpp構建一個庫,爲Android和iOS構建一個庫。在X-Cross平臺庫上使用JsonCpp
在測試我的庫爲Android,我正在做的JNI文件,但是當我嘗試加載庫我越來越
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZN4Json6WriterD2Ev" referenced by "libXYZ.so"...
那是因爲我覺得我不是我建的JSON庫很好。
我用的圖書館是這一個:https://github.com/open-source-parsers/jsoncpp
我Android.mk是:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
include $(LOCAL_PATH)/jsoncpp/Android.mk
include /Users/localmac/Desktop/AndroidDevelopment/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk
OPENCV_LIB_TYPE:=SHARED
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_C_INCLUDES += /Users/localmac/mylibrary/OpenCVtry/
LOCAL_C_INCLUDES += /Users/localmac/Desktop/RD/OpenCVtry/Libraries/jsoncpp-master/include
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
LOCAL_MODULE := libXYZ
LOCAL_SRC_FILES := androidClass.cpp main.cpp utils.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
我不知道該怎樣做到這一點的想法。
預先感謝您。
編輯它不是NDK編譯的錯。
即使我編譯JsonCpp,我得到的
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZN4Json6WriterD2Ev" referenced by "libXYZ.so"...
編輯我jsoncpp/Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CPP_EXTENSION := .cpp LOCAL_MODULE := libJsoncpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/jsoncpp/include
LOCAL_SRC_FILES := src/lib_json/json_reader.cpp \ src/lib_json/json_value.cpp \ src/lib_json/json_writer.cpp
include $(BUILD_SHARED_LIBRARY)
我沒有看到你的makefile中的jsoncpp lib鏈接在哪裏。 – JBL 2014-09-26 14:41:02
對不起,我加了......我正在編輯它 – 2014-09-26 14:41:36
你的jsoncpp的'android.mk'的內容是什麼? :) – JBL 2014-09-26 14:42:43