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中导入的文件

如图

在需要使用这个库的时候,在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的原本的运行库不同

测试结果:报错:


复制一条:

错误43 error 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中导入的文件

如图

在需要使用这个库的时候,在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的原本的运行库不同

测试结果:报错:


复制一条:

错误43 error 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。

测试结果运行成功。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值