引用JsonCPP库发生的问题和解决过程

来源:互联网 发布:node interpreter 编辑:程序博客网 时间:2024/05/21 09:06

C++要使用JSON来解析数据,一般采用jsoncpp. 

网站:http://sourceforge.net/projects/jsoncpp/

我们如果要引用JSON的API有两种方法:

其一:引用lib文件;其二:引用源文件

在这里我只试验了方法一:


方法一:

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压下载好的文件:jsoncpp-src-0.5.0.tar.gz

3.使用vs打开jsoncpp-src-0.5.0.tar.gz\makefile\vs71目录下中的jsoncpp.sln,打开后会出现三个项目工程jsontest, lib_json, test_lib_json

4.在lib_json上右击->Properties-->Configuration Properties-->C/C++-->Code Generation,记录下右边的Runtime Library的属性内容(因为两个工程的属性要保持相同,否则会编译出错)

5.编译lib_json,显示编译成功以后,在jsoncpp_src-0.5.0\build\vs71\debug\lib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝到需要使用jsoncpp的工程目录JsonTestApp下。


意外:

当我把头文件和lib_json.lib都正常引入了JsonTestApp工程下,并设置了相应的路径。但是debug运行失败:

json静态链接错误:msvcprtd.lib(MSVCP100D.dll)

原因:

因为之前在编译生成lib_json.lib时我们选择了Multi-threaded Debug (/MTd)的运行时库。所以我应该在JsonTestApp下配置如下:

工程(Project)->属性(Properties)->配置属性(Configuration Properties)->c/c++->代码生成(Code Generation)->运行时库(Use run-time library)->Multi-threaded Debug (/MTd)。

当然我们可以在生成lib时配置Multi-threaded Debug DLL (/MDd),然后再JsonTestApp中也同样配置如此。









原创粉丝点击