jasoncpp在visual studio下的编译和使用

来源:互联网 发布:工程网络计划图 编辑:程序博客网 时间:2024/06/10 23:21
在 http://sourceforge.net/projects/jsoncpp 下载jsoncpp,解压后用visual studio(笔者是vs2010)打开 jsoncpp-src-0.5.0\makefiles\vs71\lib_json.vcproj,转换成vs2010的工程文件。
 
在lib_json的项目属性中设置如下:
如上图所示,要把“运行库”设置为“多线程DLL(/MD)”
 
如上图所示,要把“全程序优化”设置为“无全程序优化”。
 
再编译生成release版本的json_vc71_libmt.lib,可以把名字改成其他,如json.lib。然后就可以在其他MFC/VC工程中使用了。例如,新建win32 console项目,键入代码如下:

  1. #include "stdafx.h"
  2. #include "json/json.h"
  3. #include "string"
  4. using namespace std;

  5. #pragma comment(lib,"libs/json.lib")

  6. int _tmain(int argc, _TCHAR* argv[])
  7. {

  8.     Json::Reader reader;
  9.     Json::Value root;

  10.     string doc("{\"name\":\"bigboy\",\"gender\":\"male\"}");
  11.     if(!reader.parse(doc,root,false)){

  12.         printf("failed to parse!\n");
  13.         return -1;
  14.     }

  15.     string name=root["name"].asString();
  16.     string gender=root["gender"].asString();
  17.     cout<<"name:"<<name<<endl;
  18.     cout<<"gender:"<<gender<<endl;

  19.     system("pause");
  20.     return 0;
  21. }




-------------------------------------------------------------------------------------------------------------
将JSONCPP以静态库方式导入,需要注意的是,项目中的代码生成中的运行库,和JSONCPP的静态库项目的代码生成的运行库要一致,否则将报如下错误
[cpp] view plain copy
  1. afxver_.h(81): fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds  

图1是JSONCPP的lib_json项目的


图2是自己的项目的运行库


导入所有include的.h文件:做法是将JSONCPP的include文件夹中文件拷贝到自己的项目文件夹中,通过解决方案资源管理器的显示所有文件功能,想这些文件显示出来并通过右键将这些文件包含到项目中。

在使用json中定义的类的时候,只需要包含json.h头文件即可。而在json中定义的变量时,如果一直无法识别类型,可考虑是否是缺少名字空间,Json是所有JSON类的名字空间。


0 0