Jsoncpp引用规范

 

解析JSON需要引入库文件。C++开源的有很多库。git上面也有许多Json的解析库。目前使用的最多的是https://github.com/open-source-parsers/jsoncpp
名为jsoncpp。

使用Jsoncpp

方法一使用Jsoncpp生成的lib文件

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压下载好的文件:jsoncpp-src-0.5.0.tar.gz

3.使用vs打开jsoncpp-src-0.5.0.tar.gz\makefile\vs71目录下中的jsoncpp.sln,打开后会出现三个项目工程jsontest, lib_json, test_lib_json

4.在lib_json上右击->Properties-->Configuration Properties-->C/C++-->Code Generation,记录下右边的Runtime Library的属性内容(因为两个工程的属性要保持相同,否则会编译出错)

5.编译lib_json,显示编译成功以后,在jsoncpp_src-0.5.0\build\vs71\debug\lib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝到需要使用jsoncpp的工程目录下。

6.将jsoncpp-src-0.5.0\include\json目录下的所有的.h文件拷贝到需要使用jsoncpp的工程目录下,并在头文件中引入这个文件。

7.找到自己的项目工程,点击Properties-->Configuration Properties-->C/C++-->Code Generation,将Runtime Library修改为第4步中相同的内容。

8.在工程名上右键点击Properties-->Configuration Properties-->Linker-->Input,在Additional Dependencies里面填写json_vc71_libmtd.lib,点击应用,点击编译即可。

方法二:使用Jsoncpp包中的.cpp和.h文件

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压上面下载的Jsoncpp文件.得到文件jsoncpp-src-0.5.0

3.将jsoncpp-src-0.5.0\include目录下的json文件夹拷贝到当前项目工程目录下

4.将jsoncpp-src-0.5.0\src\lib_json 目录下的所有文件拷贝到

5.在vs中引入工程目录中在jsoncpp-src-0.5.0中导入的文件

如图Jsoncpp引用规范

在需要使用这个库的时候,在cpp中include"json/json.h"即可。

在编译的时候可能报错:作以下改动即可

 

  1. json_reader.cpp 中加入#include "stdafx.h",将#include<json/reader.h>改为#include“json/reader.h”,#include<json/value.h>改为#include "json/value.h";
  2. json_value.cpp中加入#include "stdafx.h",将#include <json/value.h>改为#include "json/value.h", #include <json/writer.h>改为 #include "json/writer.h";
  3. json_writer.cpp中加入#include "stdafx.h",将#include <json/writer.h>改为#include "json/writer.h"。

以上方法来自:http://blog.csdn.net/chenxun_2010/article/details/41847131

 


抱着学习不能一知半解的心态,测试一下:

1.在方法一中,第4步:

(关于工程属性的作用在我的博客中有转载)

①修改使用jsoncpp的项目工程使得它与jsoncpp的原本的运行库不同

测试结果:报错:

Jsoncpp引用规范

复制一条:

错误43error LNK2005: "bool __cdecl std::uncaught_exception(void)" (?uncaught_exception@std@@YA_NXZ) 已经在 libcpmtd.lib(uncaught.obj) 中定义。

由运行库不同,可知:MTd 使用的是        libcpmtd.lib。

由此猜想为什么保持一致,是因为MTd,MDd都会引用一个库,而几个库中有许多相同的函数或者类,因此如果不保持一致则会引起重复定义。

②修改原本工程的运行库属性:

属性中分为Release和Debug版本,Release版本有:MT /MD,Debug版本有:MTd/MDd 版本,原本的是MTd,现在修改为MDd。使用jsoncpp的项目工程中也同样修改为MDd。

测试结果运行成功。





 

解析JSON需要引入库文件。C++开源的有很多库。git上面也有许多Json的解析库。目前使用的最多的是https://github.com/open-source-parsers/jsoncpp
名为jsoncpp。

使用Jsoncpp

方法一使用Jsoncpp生成的lib文件

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压下载好的文件:jsoncpp-src-0.5.0.tar.gz

3.使用vs打开jsoncpp-src-0.5.0.tar.gz\makefile\vs71目录下中的jsoncpp.sln,打开后会出现三个项目工程jsontest, lib_json, test_lib_json

4.在lib_json上右击->Properties-->Configuration Properties-->C/C++-->Code Generation,记录下右边的Runtime Library的属性内容(因为两个工程的属性要保持相同,否则会编译出错)

5.编译lib_json,显示编译成功以后,在jsoncpp_src-0.5.0\build\vs71\debug\lib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝到需要使用jsoncpp的工程目录下。

6.将jsoncpp-src-0.5.0\include\json目录下的所有的.h文件拷贝到需要使用jsoncpp的工程目录下,并在头文件中引入这个文件。

7.找到自己的项目工程,点击Properties-->Configuration Properties-->C/C++-->Code Generation,将Runtime Library修改为第4步中相同的内容。

8.在工程名上右键点击Properties-->Configuration Properties-->Linker-->Input,在Additional Dependencies里面填写json_vc71_libmtd.lib,点击应用,点击编译即可。

方法二:使用Jsoncpp包中的.cpp和.h文件

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压上面下载的Jsoncpp文件.得到文件jsoncpp-src-0.5.0

3.将jsoncpp-src-0.5.0\include目录下的json文件夹拷贝到当前项目工程目录下

4.将jsoncpp-src-0.5.0\src\lib_json 目录下的所有文件拷贝到

5.在vs中引入工程目录中在jsoncpp-src-0.5.0中导入的文件

如图Jsoncpp引用规范

在需要使用这个库的时候,在cpp中include"json/json.h"即可。

在编译的时候可能报错:作以下改动即可

 

  1. json_reader.cpp 中加入#include "stdafx.h",将#include<json/reader.h>改为#include“json/reader.h”,#include<json/value.h>改为#include "json/value.h";
  2. json_value.cpp中加入#include "stdafx.h",将#include <json/value.h>改为#include "json/value.h", #include <json/writer.h>改为 #include "json/writer.h";
  3. json_writer.cpp中加入#include "stdafx.h",将#include <json/writer.h>改为#include "json/writer.h"。

以上方法来自:http://blog.csdn.net/chenxun_2010/article/details/41847131

 


抱着学习不能一知半解的心态,测试一下:

1.在方法一中,第4步:

(关于工程属性的作用在我的博客中有转载)

①修改使用jsoncpp的项目工程使得它与jsoncpp的原本的运行库不同

测试结果:报错:

Jsoncpp引用规范

复制一条:

错误43error LNK2005: "bool __cdecl std::uncaught_exception(void)" (?uncaught_exception@std@@YA_NXZ) 已经在 libcpmtd.lib(uncaught.obj) 中定义。

由运行库不同,可知:MTd 使用的是        libcpmtd.lib。

由此猜想为什么保持一致,是因为MTd,MDd都会引用一个库,而几个库中有许多相同的函数或者类,因此如果不保持一致则会引起重复定义。

②修改原本工程的运行库属性:

属性中分为Release和Debug版本,Release版本有:MT /MD,Debug版本有:MTd/MDd 版本,原本的是MTd,现在修改为MDd。使用jsoncpp的项目工程中也同样修改为MDd。

测试结果运行成功。





 

 

原文链接: https://www.cnblogs.com/citron/p/6135606.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    Jsoncpp引用规范

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/243183

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午11:03
下一篇 2023年2月13日 下午11:04

相关推荐