博客荒废了很久,想想程序员的表达能力还是要多加锻炼,而且好记性不如烂笔头。
在找到新BLOG之前,还是继续写在优快云上吧。
怕自己忘记,所以Mark下来。
参考链接 : http://www.cnblogs.com/ppboy_dxh/archive/2011/03/03/1970290.html
最近做一个c/s,服务端用MFC socket通信,传输打算用Json,所以就用了JsonCpp
关于Json为何物,在Json的官网上已经有很详细的介绍了。 Json官网: http://www.json.org/
C++的Json库有很多,我也不知道用哪个,一搜用Jsoncpp者居多,而且反应良好,想着自己要是碰到问题也有好多大牛帮忙解答一下。
理清一下思路,是如何一步一步把Jsoncpp添加到项目当中的。
1、下载Jsoncpp
先去Json官网把Jsoncpp下载下来,http://sourceforge.net/projects/jsoncpp/
2、编译工程
下载后解压,版本可能会不同,笔者下载时为 0.5.0
进入目录 jsoncpp-src-0.5.0\makefiles\vs71\
运行 jsoncpp.sln ,使用VS编译,编译之前要先将工程 lib_json 改为/MTd模式(如果默认不是的话)
右键 lib_json -->属性 --> 配置属性 --> C/C++ --> 代码生成 -->运行库 , 选择 “多线程调试(/MTd)”
3、把json库添加至 测试工程中(以下简称Test.sln)
json工程编译后,会在 jsoncpp-src-0.5.0\build\vs71\debug\lib_json\ 中生成 json_vc71_libmtd.lib 拷贝至Test.sln目录下。(json_vc71_libmtd.lib 这个名字版本不同可能会有所不同,所以网上搜集的资料会看到不一样的名字)
同时将头文件也添加至工程中:把 jsoncpp-src-0.5.0\include\ 文件夹拷贝至Test.sln中。
注:有些人不知道拷贝的目录指的是哪里,可以在Test.sln中右键Test --> 在文件资源管理器中打开文件夹 ,这里显示的位置就是要拷贝至的目录。
拷贝完.lib和.h后,把.h添加至项目中: 在Test.sln 的Test --->右键 “头文件” -->添加现有项目, 把include所有的头文件都选上,点确定。
右键Test -->属性 --> 配置属性 --> 链接器 --> 输入 --> 附加依赖项 ,输入 json_vc71_libmtd.lib
把Test.sln想改为/MTd模式
注:如果使用的是MFC,会报错让你使用/md模式,因为MFC默认/md,而.lib用的是/mtd,要一致,还要修改 项目-->配置属性-->常规--> MFC的使用,修改为“在静态库中使用MFC”
此致,Jsoncpp已经附加进项目中了,下面贴出测试代码:
#pragma comment(lib, "json_vc71_libmtd.lib")
#include <fstream>
#include "json/json.h"
int main()
{
person["name"] = "hello world";
person["jsonlib"] = "jsoncpp";
root.append(person);
std::string json_file = writer.write(root);
ofstream ofs;
ofs.open("test.json");
assert(ofs.is_open());
ofs<<json_file;
return 1;
}
然后编译运行,看一下目录是不是多了个text.json,打开看内容是不是如设置的一样?
恭喜你成功把Jsoncpp添加进来!
最后要说明一点,
json_vc71_libmtd.lib 各个版本可能名字会不一样,代码可不能全靠复制粘贴哟