gpt4 book ai didi

android - 在 X-Cross 平台库上使用 JsonCpp

转载 作者:太空宇宙 更新时间:2023-11-03 22:57:32 25 4
gpt4 key购买 nike

我正在使用 OpenCV 和 JsonCpp 在 C++ 中创建一个库,以便为 Android 和 iOS 构建一个库。

在为 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。您应该添加以下行:

LOCAL_SHARED_LIBRARIES := libJsoncpp

在最后一个 include $(BUILD_SHARED_LIBRARY) 之前。

您必须为此变量(及其姊妹 LOCAL_STATIC_LIBRARIES)指定模块名称,即您为 LOCAL_MODULE 变量指定的内容。

此外,这使您不必在 LOCAL_C_INCLUDE 变量中指定包含项(因为在我在帖子顶部提到的变量中指定库时,makefile 将直接包含它们)。

编辑:为了完整起见,我要补充一点,您可以像这样指定多个库:

LOCAL_SHARED_LIBRARIES = libJsoncpp \
libOpenCV \
...

LOCAL_STATIC_LIBRARIES 也是如此。

关于android - 在 X-Cross 平台库上使用 JsonCpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26061564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com