【问题标题】:install a C++ json library on xcode在 xcode 上安装 C++ json 库
【发布时间】:2013-11-11 00:35:04
【问题描述】:

我对 xcode 和 c++ 编程非常陌生,所以如果我做错了,请告诉我。基本上,我想创建一个 C++ 项目,该项目需要一个库来处理发出和接收 json 调用。 (这最终将集成为 iOs 和 android 应用程序的“引擎”。)我想使用 xcode 来创建它,我尝试安装 libjson 但无法识别它。然后我尝试使用 JsonCpp 并按照说明进行操作。

1) 我下载了 tar.gz 2) 我下载了 scons python 程序并在 jsoncpp 文件夹中运行了适当的命令(类似于'python scons.py platform=linux-gcc check')

这创建了一个 .a 和一个 .dylib 文件

接下来,我尝试将文件移动到项目中,并从项目设置中 Build Phases 选项卡的“Link Binary With Libraries”部分将其链接到 xcode。

我使用包含语句将代码链接到我的文件: #include "lib/jsoncpp/json.h"

这导致了以下错误:

架构 x86_64 的未定义符号: “Json::Reader::parse(std::__1::basic_string, std::__1::allocator > const&, Json::Value&, bool)”,引用自: jsonParser::parseLogin(std::__1::basic_string, std::__1::allocator >&, std::__1::basic_string, std::__1::allocator >&) 在 jsonParser.o ld:未找到架构 x86_64 的符号

(null): "Json::Reader::parse(std::__1::basic_string, std::__1::allocator > const&, Json::Value&, bool)",引用自:

我想做的只是设置这个库,但过去一天我一直无法处理我的代码以寻找解决方案。

对于 libjson 库,我尝试按照此处的说明进行操作,但遇到了类似问题: Cannot Install libjson in c++ Embedding in XCode 4 Project

有人对我可以采取的设置步骤有什么建议吗?感谢您的宝贵时间。

【问题讨论】:

  • 一个相当完整的JSON编解码包只有2K行左右。不值得做整个单独编译的事情(尤其是如果你不理解它)——只需在你的项目中包含源代码。
  • 我尝试了你的建议。 jsoncpp 特别有一个 amalgamate.py 脚本,它让我可以制作一个简单的头文件和源文件。但是,当我尝试实现源代码时,得到了与调试代码相关的所有这些错误。我已经尝试了几天但无法弄清楚,但最终我们找到了一个包含所有设置的视觉工作室项目。由于我现在没有太多时间,我将推迟使用它并尝试稍后再次解决这个问题(当我尝试将代码迁移到 xcode 时我将不得不这样做).. . 感谢您的帮助@Hot Licks

标签: c++ json xcode jsoncpp libjson


【解决方案1】:

在项目导航器(XCode 左侧)中,单击项目上方。那么:

Build Phases -> Link binary with libraries

您可以在此处添加将链接到您的应用程序的所有库和/或框架。保持此页面打开,然后拖放库区域内的库...就是这样!没有秘密!

如果它不起作用。您可能使用了错误的库。尝试 lipo -info library 检查库架构是否与您尝试使用的相同(在本例中为 x86_64)。

如果还是不行。您可能与 C++ 不兼容。 libstdc++ 和 libc++ 在构建中的任何混合都会导致麻烦。所有使用 clang 构建的 C++11 代码都应该设置一个环境变量:CXX=clang++ -std=c++11 -stdlib=libc++,或者添加 CXX="clang++ -std=c++11 -stdlib=libc++" 作为参数来配置。)。如果您通过命令行编译了 libjson,请再次检查。但是,对于 libJSON,如果您打开一个新的 XCode 项目并将文件添加到项目中而不是通过命令行编译它,会容易得多。

【讨论】:

  • 嗨瓦格纳,感谢您的建议。我听从了你的建议,把 libjson_linux-gcc-4.2.1_lbmt.a 和 libjson_linux-gcc-4.2.1_lbmt.dylib 拖了进去。当我尝试运行 reader.parse(...) 时,我尝试构建项目并遇到了我在原始帖子中提到的相同错误。还有其他建议吗?
  • 感谢额外的 cmets。在这一点上,我找到了一个温和的解决方法,但是当我有更多时间时,我会更彻底地查看我的环境变量并尝试编译代码并以新鲜和热切的心态面对挂断。
  • 嗨@Wagner,我使用 lipo 检查了库,它被声明为 x86_64。但是,我仍然收到无法识别符号的链接器错误。最后,我尝试将 libjson 的整个源项目复制到我的 xcode 项目中并构建它。它最终解决了这个问题。
【解决方案2】:

最后,我尝试将整个源项目复制到我的 xcode 项目中并构建它。它最终解决了问题。

这就是我解决问题的方法:

  1. 从 sourceforge 下载 libjson
  2. 解压。
      -
  3. 将 _internal 文件夹、libjson.h 和 JSONOptions.h 移动到 xcode 项目文件夹
  4. 将这些文件添加到您的 xcode 项目中
  5. 从该项目中删除不需要的测试套件文件
  6. 构建你的 main 来测试它,你应该一切顺利。

【讨论】:

    猜你喜欢
    • 2017-04-05
    • 1970-01-01
    • 2015-12-17
    • 2021-04-15
    • 2016-03-24
    • 1970-01-01
    • 2014-10-10
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多