在X-Cross平台库上使用JsonCpp
Using JsonCpp on X-Cross platform library
我正在用OpenCV和JsonCpp在C++中制作一个库,以构建一个适用于Android和iOS的库。
在为Android测试我的库时,我正在制作JNI文件,但当我尝试加载库时,会得到
java.lang.UnsisfiedLink错误: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)
我不知道该怎么做。
提前谢谢。
EDIT这不是NDK编译的错。
即使我编译JsonCpp,我也会得到
java.lang.UnsisfiedLink错误:dlopen失败:找不到"libXYZ.so"引用的符号"_ZN4Json6WriterD2Ev"…
编辑我的jsoncpp/Android.mk:
LOCAL_PATH:=$(调用我的目录)
包括$(CLEAR_VARS)
LOCAL_CAP_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_ARED_LIBRARY)
您的makefile中没有针对Jsoncpp进行链接。您应该添加以下行:
LOCAL_SHARED_LIBRARIES := libJsoncpp
在最后一个CCD_ 1之前。
必须为此变量(及其姊妹LOCAL_STATIC_LIBRARIES
)指定模块名称,也就是为LOCAL_MODULE
变量指定的名称。
此外,这使您不用在LOCAL_C_INCLUDE
变量中指定includes(因为在我在文章顶部提到的变量中指定库时,makefile将直接包括它们)。
EDIT:为了完整起见,我将添加您可以指定多个库,如
LOCAL_SHARED_LIBRARIES = libJsoncpp
libOpenCV
...
CCD_ 5也是如此。
- 使用jsoncpp库时出现链接问题
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 使用 jsoncpp 解析 json 数组字符串
- 如何将 jsoncpp 库包含在 unix 上的项目中?
- JsonCpp在退出函数时抛出LogicError
- 使用jsoncpp-NuGet包时获取未解析的外部符号
- JSONCPP 只用一个元素写入 JSON 数组
- 使用 jsoncpp 读取 JSON 文件
- Webots Visual Studio Cross-complitation
- 如何将Unix库添加到Visual Studio for Cross Compilation?
- 使用 JSONCPP 将 JSON 数据增量写入文件
- 使用 jsoncpp 时从 JSon 剥离私有数据的最佳方法
- 如何创建和填充 jsoncpp 数组 (jsoncpp.sourceforge)
- 尝试在构造函数中的"glm::cross"处初始化我的类段错误
- 在这种情况下如何让 jsoncpp 抛出?
- 为什么 JsonCpp http 客户端在 201 响应代码上失败?
- 要从url解析的JsonCpp
- 将它们添加到C 中的JSONCPP模块中的数组之后
- 转义 json 的文件路径 (JsonCPP)
- 在X-Cross平台库上使用JsonCpp