当前位置: 首页 > 知识库问答 >
问题:

在X-跨平台库中使用JsonCpp

齐宗清
2023-03-14

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

在为Android测试我的库时,我正在制作JNI文件,但当我尝试加载库时,我得到了

这是因为我认为我的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)

即使我编译了JsonCpp,我也会得到

java.lang.UnsatisfiedLinkError:dlopen失败:找不到“libxyz.so”引用的符号“_zn4json6writerd2ev”...

编辑我的jsoncpp/android.mk:

包括$(CLEAR_VARS)

LOCAL_CPP_EXTENSION:=.cpp LOCAL_MODULE:=libJsoncpp

LOCAL_C_INCLUDES:=$(LOCAL_PATH)/jsoncpp/include

包括$(BUILD_SHARED_LIBRARY)

共有1个答案

元望
2023-03-14

您不是在makefile中针对Jsoncpp进行链接。您应该添加以下行:

LOCAL_SHARED_LIBRARIES := libJsoncpp

在最后一个之前,包括$(BUILD_SHARED_LIBRARY)

必须为该变量(及其姊妹local_static_libraries)指定模块名,即为local_module变量指定的模块名。

此外,这也使您不必在local_c_include变量中指定包含(因为在文章顶部提到的变量中指定库时,makefile将直接包含它们)。

编辑:为了完整起见,我将添加您可以像这样指定多个库:

LOCAL_SHARED_LIBRARIES = libJsoncpp \
                         libOpenCV \
                         ...

对于local_static_libraries也是如此。

 类似资料:
  • 多平台支持 Mpx支持在多个小程序平台中进行增强,目前支持的小程序平台包括微信,支付宝,百度,qq和头条,不过自2.0版本后,Mpx支持了以微信增强语法为base的跨平台输出,实现了一套业务源码在多端输出运行的能力,大大提升了多小程序平台业务的开发效率,详情可以查看template增强特性 不同平台上的模板增强指令按照平台的指令风格进行设计,文档和代码示例为了方便统一采用微信小程序下的书写方式。

  • 问题内容: 我正在使用以下代码在Linux / OSX上为Python库隐藏stderr,但我不控制默认情况下写入stderr的Python库: 是否有一个简单的跨平台替代/ dev / null?理想情况下,它不会消耗内存,因为这是一个长期运行的过程。 问题答案: os.devnull怎么样?

  • 我需要在我的应用程序中为不同的标签指定不同的FontFamily。我需要使用默认字体(如Android的Roboto和iOS的Helvetica)及其修改(如轻、中、粗)。据我所知,我应该使用Roboto-Light和Helvetica-Light来获得字体的轻版本(中号和粗体相同)。除了这个需求之外,我还需要在XAML中设置字体(如文档中所描述的),所以我最终得到了以下代码 然而,在Androi

  • 作为第三代数据统计和分析平台,诸葛实现了对用户的实名(实账号)分析,并主张互联网产品分析以用户为中心的分析思想并提供了一系列方法论。对用户的唯一标识来源于企业自身数据库对用户的唯一识别符,也即诸葛底层数据采集是以用户为中心的采集,我们提供了跨平台分析版本, 满足企业以用户为中心的整体的分析需求,不同平台相同业务价值下的用户完整的故事解读(例如:分析电商的用户在PC端浏览产品,在移动端支付的转化率)

  • 说明 由于在跨端开发中,必不可少的会遇到不同端需要有不同实现的情况。参考滴滴chameleon中的多态,megalo中实现了类似的跨平台兼容方案。需要使用时,请保证@megalo/target的版本号大于或等于0.7.2。 js的跨平台兼容 megalo中下面两种形式的引用会被特殊处理: [path-to-name]/[name]/index.mpjs [path-to-name]/[name]

  • 问题内容: 我正在研究使用python开发控制台应用程序,该应用程序应该能够在Windows和Linux下运行。为此,我真的很想使用像curses这样的高级控制台库。但是,据我所知,curses在Windows上不可用。 我还有什么其他选择?不幸的是,在Windows下不能使用cygwin。 谢谢你的帮助! 问题答案: 有一个问题。我从未尝试过,但它可能满足您的需求。听起来好像并没有完全的curs