JSONCPP在VS2013的编译和使用

本文介绍了如何在Visual Studio 2013中编译和使用JSONCPP库,包括设置运行时库、拷贝库文件和头文件、解决链接错误等问题。同时,解释了JSONCPP的基本类如Value、Reader、Writer的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSONCPP是较广为使用的json格式数据解析库,简要介绍其编译和使用方法。

编译与使用:
1.解压下载好的文件:jsoncpp-src-0.5.0.tar.gz
2.利用VS2013打开jsoncpp-src-0.5.0\makefiles\vs71目录下的jsoncpp.sln,会出现三个Project:jsontest, lib_json, test_lib_json
3.在lib_json上右击-->Properties-->Configuration Properties-->C/C++-->Code Generation,设置RunTime Library 为MTD
4.在jsoncpp-src-0.5.0\build\vs71\debug\lib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝至TestJSON工程目录下。
5.将jsoncpp-src-0.5.0\include\json目录下的所有.h文件拷贝至TestJSON工程目录下,并在工程Header Files引入.
6.在TestJSON工程名上 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation, 将Runtime Library设置为MTD
7.TestJson-->Properties-->Configuration Properties-->Linker-->Input, 在Additional Dependencies里填写json_vc71_libmtd.lib,然后确定
(红字标明的地方一定要保持一致)

报错注意点:
使用时容易出现报错,例如
error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”
或者
error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
原因:该错误的出现是因为在编译生成时的运行库设置存在问题,应该统一成相同。
例如:引用的是静态库,调试的是动态库MDd,更改为MTd。
方法:项目属性->配置属性->C/C++->代码生成-->运行库 设置为多线程调试(/MTd)。

运行库对应的不同含义如下:
多线程调试Dll (/MDd) MD_DynamicDebug
多线程Dll (/MD) MD_DynamicRelease
多线程(/MT) MD_StaticRelease
多线程(/MTd) MD_StaticDebug

基本介绍:
1. jsoncpp主要包含三种类型的class:Value、Reader、Writer,jsoncpp中所有的对象、类名都在namespace Json中,使用时只需#include "json.h"

2. Json::Value是jsoncpp中最基本、最重要的类,用于表示各种类型的对象,例如
Json::Value jsonTemp;//表示整个json对象
jsonTemp["name"]=Json::Value("Yng");

3. Json::Writer是一个纯虚类,不能直接使用,一般使用Json::Writer的子类:Json::FasterWriter、Json::StyledWriter、Json::StyledStreamWriter。
Json::FasterWriter fastWriter;
fastWriter.write();

4. Json::Reader主要用于读取,将字符串转换为Json::Value对象。
Json::Reader reader;
Json::Value json_object;
const char* json_document = "{/"age/" : 26,/"name/" : /"huchao/"}";
if (!reader.parse(json_document, json_object))
return 0;
std::cout << json_object["name"] << std::endl;
std::cout << json_object["age"] << std::endl;
输出结果为:
"huchao"

使用第三方源码最简单的方法是直接将文件加入工程,但这样不利于源码、软件产品管理,对于一般软件开发来说,不建议使用。
如果真需要编译成动态链接库、静态导入库的话,可以使用 VS 新建一个工程属性,然后在 Project --> Properties中进行相应的设置即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值