AndroidおよびiOS用のライブラリを構築するために、OpenCVとJsonCppを使用してC++でライブラリを作成しています。
Android 用のライブラリをテストする際に、JNI ファイルを作成していますが、ライブラリをロードしようとすると、
java.lang.UnsatisfiedLinkError: dlopen に失敗しました: 「libXYZ.so」によって参照されるシンボル「_ZN4Json6WriterD2Ev」が見つかりません...
それは、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 に失敗しました: 「libXYZ.so」によって参照されるシンボル「_ZN4Json6WriterD2Ev」が見つかりません...
編集私の jsoncpp/Android.mk :
LOCAL_PATH := $(my-dir を呼び出す)
$(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
$(BUILD_SHARED_LIBRARY) を含める