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

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中也同样配置如此。

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...