正在链接jsoncpp(libjson)
Linking jsoncpp (libjson)
我正在尝试使用cmake将jsoncpp(lib_json)与一个c++项目链接起来。它在一台计算机上运行得很好,但在另一台计算机(配置几乎相同)上,我在执行应用程序时出错:
dyld:未加载库:buildscons/linux-gcc-4.2.1/src/lib_json/libjson_linux-gcc-4.2_libmt.dylib
引用自:可执行的路径
原因:找不到图像
知道是什么原因造成的吗?我甚至不明白为什么它试图查找@buildscons/linux-gcc-4.2.1/src/lib_json/libjson_linux-gcc_4.21_librt.dylib,因为我把jsoncpp放在了usr/lib/中,并将名称改为libjsoncpp,然后cmake找到了正确的路径/库。
我还在两台计算机上以完全相同的方式构建了jsoncpp。
我也遇到了同样的问题。如果运行tool -L libjson_linux-gcc-4.2.1_libmt.dylib
,您可以看到与libjson...
的一些奇怪的相对地址。我想如果复制这个目录结构,它会起作用,但这是一个糟糕的解决方案。
相反,我使用了.a
(libjson_linux-gcc-4.2.1_libmt.a
),并将其与二进制文件静态链接。在XCode中,简单地在Build Settings
->Linking
->Other Linker Flags
下,我为我的.a
添加了绝对路径。对我来说,这是/Users/martin/Downloads/jsoncpp-src-0.5.0/libs/linux-gcc-4.2.1/libjson_linux-gcc-4.2.1_libmt.a
,仅此而已。
当然,我不知道你的用例,也许你真的需要动态链接它。
编辑:我现在明白了,你指的是libjson,而不是libjsonpp(它们不同!)
在你的滴度中,你谈到了jsoncpp,这就是这个答案的意义所在。但也许它对那些被滴度弄糊涂的人也有用。
您可以'合并'jsoncpp。
从jsoncpp源目录运行python amalgamate.py
,创建:
dist/jsoncpp.cpp
dist/json/json.h
dist/json/json-forwards.h
现在,您必须编译jsoncpp.cpp
一次,然后链接到生成的jsoncpp.o
:
g++ -o jsoncpp.o -c jsoncpp.cpp
(仅一次)g++ -o executable jsoncpp.o main.cpp
(每次)
如果出现错误,在包含json/json.h
之前可能必须先使用#define JSON_IS_AMALGAMATION
,但是。。。
我试过了,它对我有效。(没有#define JSON_IS_AMALGAMATION
,也就是)
使用的代码:
#include "json/json.h"
#include "json/json-forwards.h"
int main(int argc, char *argv[])
{
Json::Reader reader;
Json::Value value;
if (!reader.parse("{"hello":"world"}", value, false))
{
std::cerr << "ERROR: Couldn't parse Json: " << reader.getFormattedErrorMessages() << std::endl;
return -1;
}
std::cout << value.toStyledString() << std::endl;
return 0;
}
- 使用jsoncpp库时出现链接问题
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 使用 jsoncpp 解析 json 数组字符串
- 如何将 jsoncpp 库包含在 unix 上的项目中?
- JsonCpp在退出函数时抛出LogicError
- 使用jsoncpp-NuGet包时获取未解析的外部符号
- JSONCPP 只用一个元素写入 JSON 数组
- 使用 jsoncpp 读取 JSON 文件
- 使用 JSONCPP 将 JSON 数据增量写入文件
- 使用 jsoncpp 时从 JSon 剥离私有数据的最佳方法
- 如何创建和填充 jsoncpp 数组 (jsoncpp.sourceforge)
- 在这种情况下如何让 jsoncpp 抛出?
- 为什么 JsonCpp http 客户端在 201 响应代码上失败?
- 要从url解析的JsonCpp
- 将它们添加到C 中的JSONCPP模块中的数组之后
- 转义 json 的文件路径 (JsonCPP)
- 如何设置JSONCPP用于Visual C 项目
- c++ jsoncpp 读取 json 文件
- 在 jsoncpp 中区分 int 和 uint 类型
- 正在链接jsoncpp(libjson)