一、下载Jsoncpp
1.1 文件名
jsoncpp-src-0.5.0.tar.gz
1.2 Jsoncpp下载地址
http://sourceforge.net/projects/jsoncpp/
二、编译Jsoncpp
2.1 下载,解压
下载jsoncpp-src-0.5.0.tar.gz,解压缩到D:\。
2.2 编译
进入目录D:\jsoncpp-src-0.5.0\makefiles\vs71,打开jsoncpp.sln,编译。
2.3 生成结果
在目录D:\jsoncpp-src-0.5.0\build\vs71\debug\lib_json下,生成文件json_vc71_libmtd.lib。
三、Jsoncpp示例代码
3.1 配置编译环境
1. 将json_vc71_libmtd.lib,拷贝到当前工程下。
2. 将D:\jsoncpp-src-0.5.0\include\json目录,拷贝到当前工程下。
3.2 代码
- #include
- #include
- #include "../json/json.h"
- using namespace std;
- #pragma comment(lib,"json_vc71_libmtd.lib")
- void main()
- {
- ifstream ifs;
- ifs.open("test.json", ios::out|ios::in);
- if(!ifs.is_open())
- {
- cout<<"fail to open file."<<endl;
- return;
- }
- Json::Reader reader;
- Json::Value root;
- if(!reader.parse(ifs, root))
- {
- cout<<"fail to parse."<<endl;
- return;
- }
- string s_name;
- int i_age;
- for(int i=0; i
- {
- s_name = root[i]["name"].asString();
- i_age = root[i]["age"].asInt();
- cout<<"name:"<<s_name.c_str()<<", "<<"age:"<<i_age<<endl;
- }
- }
1. json文件:[{"name":"kanguolai","age":25},{"name":"kanguoqu","age":18}]
2. 生成结果:
四、错误处理
4.1 编译Jsoncpp错误:
1. 现象:C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: 命令“D:\Installed software for develop\jsoncpp-src-0.5.0\makefiles\vs71\../../build/vs71/debug/test_lib_json\test_lib_json.exe
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd”已退出,代码为 9009。
2.解决办法:Jsoncpp放置的目录路径中,不能包含空格。
4.2 编译测试代码错误
1. 现象: error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) 已经在 msvcprtd.lib(MSVCP100D.dll) 中定义。
等一系列的错误提示。
2. 解决办法:属性 --> C/C++ --> 代码生成 --> 运行库 将其中的 “多线程调试DLL(/MDd)” 改为 “多线程调试(/MTd)” 。
最根本解决办法:在编译Jsoncpp工程前,将其所有工程,由 “多线程调试(/MTd)” 改为 “多线程调试DLL(/MDd)” 。
参考资料:
资料:http://blog.csdn.net/nana08/article/details/6918877
资料与示例:http://www.cnblogs.com/kex1n/archive/2011/12/02/2272328.html