原文链接
使用VS2008编译jsoncpp源码为静态库,在自己工程中使用
-
VS2008
-
MFC工程下使用
-
JSON源码,下载地址:
-
解压下载的文件:jsoncpp-src-0.5.0.tar.gz jsoncpp
5.打开源码的工程E:\vs2008_project\json\jsoncpp-src-0.5.0\makefiles\vs71\jsoncpp.sln
6.生成Debug和Release版本的lib文件,步骤如下:
1>>打开页面如下图1.
2>>(Debug和Release模式方式一样)右键lib_json项目->仅用于项目->仅生产lib_json
3>>再次右键lib_json项目->仅用于项目->仅链接lib_json
4>>生成lib文件在E:\vs2008_project\json\jsoncpp-src-0.5.0\build\vs71下
5>>注意:fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_json\json_writer.asm”: No such file or directory ,一般就是release版本的lib需要在属性设置的时候:配置属性->常规->项目默认值最下面两项改成如图所示.
-
拷贝 E:\vs2008_project\json\jsoncpp-src-0.5.0\include文件的下的json文件到自己的工程下.
-
拷贝刚生成的两个lib(如默认名称Debug版本json_vc71_libmtd.lib Release版本json_vc71_libmt.lib)到工程下.目录任意
9.lib文件 + 头文件.h 就可以添加到自己的工程下编译了
1&& 项目->属性->配置属性->C/C++->常规->附加包含目录(jsoncpp源码的头文件.h文件所在位置)
2&& 项目->属性->配置属性->链接器->常规->附加库目录(jsoncpp源码刚生成json_vc71_libmtd.lib和json_vc71_libmt.lib的目录)
3&& 项目->属性->配置属性->链接器->输入->附加依赖项(Debug版本json_vc71_libmtd.lib/Release版本json_vc71_libmt.lib)
10.一般情况下会报错,我的工程师MFC工程,而jsoncpp是win32控制台工程,所以那面容易出错
1## 错误如出现error LNK2005已定义.可修改 项目->属性->配置属性->常规->MFC的使用->在静态库中使用MFC
2## StdAfx.h没有引用可以在 项目->属性->配置属性->C/C++->预编译头->不使用预编译(/Yu)
3## 项目->属性->配置属性->C/C++->代码生成-->运行时库Debug:多线程调试(/MTD) 或者 Release:多线程调试(/MT)
11 .从文件中解析json.
CameraConfig是一个结构体,结构体类型和json转换类型一定要一致,否则崩溃.
#define JN_bAlarm "bAlarm"
#define JN_bAutoStart "bAutoStart"
#define JN_mAlarmCru "mAlarmCru"
#define JN_mDevIndex "mDevIndex"
#define JN_mDevIp "mDevIp"
#define JN_mDevPWD "mDevPWD"
struct CameraConfig
{
bool bAlarm;
bool bAutoStart;
int mAlarmCru;
string mDevIndex;
string mDevIp;
string mDevPWD;
};
网友评论