相关文章推荐
正直的洋葱  ·  cmd if条件 ...·  6 月前    · 
健身的脸盆  ·  elasticsearch ...·  1 年前    · 

如果:1.安装JSONCPP是使用下面语句系统自动安装的。

sudo apt-get install libjsoncpp-dev

系统会自动安装,静态库在系统:/usr/include;动态库在:/usr/lib/x84_64-linux-gnu   ;

在动态库里面会有libjsoncpp.a文件。

出现这个问题就是CMake 没有引用这个文件。

现在来说说怎么引用这个文件:

在CMakeLists.txt里面加入以下代码:

第一种方法:set(lib_DIR /usr/lib/x84_64-linux-gnu)

link_directories(${lib_DIR})

target_link_libraries(http libjsoncpp.a)

第二种方法:set(lib_DIR /usr/lib/x84_64-linux-gnu)

find_package(${lib_DIR})

target_link_libraries(http libjsoncpp.a)

现在来讲解一下这些方法:

set(lib_DIR /usr/lib/x84_64-linux-gnu)

这个的lib_DIR是设置变量用于后面调用。/usr/lib/x84_64-linux-gnu是文件连接地址。

link_directories(${lib_DIR})这个是连接到这个变量的地址。${lib_DIR}这使用前面定义的变量。

target_link_libraries(http libjsoncpp.a)这个会自动在连接的所有地址进行查找libjsoncpp.a文件,再引用到http项目里面。http是项目名称。

find_package(${lib_DIR})与link_directories(${lib_DIR})一样的作用。官方建议使用find_package(${lib_DIR})。想了解为什么。百度一下。

最后运行就可以实现了。

参考: https://blog.csdn.net/qing310820/article/details/84283650

https://blog.csdn.net/u013870094/article/details/78153408

最近在Qt的项目中 使用 JSON 库的时候, 出现 了挺多错误的,一个是链接库的错误,环境是UNBUNTU16.4,本以为系统中已经安装了 json cpp 的库了,结果却无法链接。 正确做法是,添加链接即可: LIBS += -L/usr/local/lib /usr/local/lib/lib json cpp .a 这里 使用 json 库时 json cpp 库,下载地址: json cpp -master.zip: 通过将编译的文件放在前面,可以确保在解析源文件时已经解析了所有依赖的符号,从而避免了链接错误。因此,如果依赖的库放在编译的文件之前,编译器会在尚未解析这些符号的情况下开始解析源文件,从而导致链接错误。总结起来,将编译的文件放在前面、依赖的库放在后面是为了确保正确解析和链接符号,以生成可执行文件。问题的起因是,我在 使用 自己打包的动态库的时候,编译时提示动态库里指向的另一个库找不到…的顺序解析源文件和库文件。如果在链接过程中遇到未解析的符号,它会。然后我调整了一下顺序,就能编译通过了。 JSON 是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择 JSON 的全称为:JavaScript Object Notation ,顾名思义, JSON 是用于标记javascript对象的,详情参考http://www. json .org/。 Json Cpp 为解析 json 的第三方库来, Json Cpp 是比较出名的 c++ 解析库,在 json 官网也是首推的。本版本可以用 cmake 编译生成lib。编译后生成的lib文件,下载地址为 https://download.csdn.net/download/qq_28351609/10822737 使用 json cpp 出现 json _test. cpp :(.text+0x2c): undefined reference to ` Json :: Value :: Value ( Json :: Value Type)问题lib json cpp .a库没有正确链接。 undefined reference to ` Json :: Value :: Value 根据这个链接的说法,you have json cpp compiled with a different C++ ABI than you link against. The easiest solution is to use exactly the same compiler-version to build both library and executable. json cpp 使用 了其他的c+ 可以确定的是,静态库是链接成功了,然后。 json 库 的问题是真的多啊。调用给的 json 静态库 0.7。把有问题的这一段给注释就没问题。链接静态库,后面一直卡在这里。官方也没有很好的觉得方式。奇葩问题 小本本记下来。扎个眼,后面再来记录。 [root@node1 windows_share]# g++ json cpp _test.cc /tmp/ccAclhTh.o: In function `main': json cpp _test.cc:(.text+0x51): undefined reference to ` Json ::Reader::Reader()' json cpp _test.cc:(.t 增加了依赖库的路径,同时要指定连接的库.。 依赖的库是lib json cpp .so ,路径是工程目录的lib目录下。 需要在Makefile文件中增加的命令是: LDFLAGS= -L./lib LDFLAGS =-l json cpp Json :: Value Head; root["gatewayIP"] = Json :: Value (gatewayIP); root["repeaterIP"] = repeaterIP; root["groupAccount"] = groupAccount; root["groupPwd"] = groupPwd; root["agentAccount"] = agentAccount; Json :: Value narrowId1; Json :: Value narrowId2; narrowId1["nBGroupID"] = nBGroupID1; narrowId1["sLAccount"] = sLAccount1; narrowId2["nBGroupID"] = nBGroupID2; narrowId2["sLAccount"] = sLAccount2; if(0 < nBGroupID1.size()){ root["nBGroups"].append(narrowId1); if(0 buff_root, strlen(tmpdata.c_str())+1, tmpdata.c_str()); cout<<"buff_root :"<buff_root << endl; 使用 C++ 处理 JSON 数据交换格式 JSON 的全称为:JavaScript Object Notation,顾名思义, JSON 是用于标记 Javascript 对象的, JSON 官方的解释为: JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何 使用 C++ 语言来处理 JSON 。关于 JSON 更具体的信息,可参见 JSON 官网:http://www. json .org。