visual stdio 2015 编译jsoncpp遇到的常见问题

  1.  重复定义的问题,具体如下:

3>json_vc71_libmt.lib(json_value.obj) : error LNK2005: "public: static int const std::numeric_limits<unsigned short>::digits10" ([email protected][email protected]@[email protected]@2HB) 已经在 json_vc71_libmt.lib(json_writer.obj) 中定义
3>json_vc71_libmt.lib(json_value.obj) : error LNK2005: "public: static int const std::numeric_limits<long>::digits" ([email protected][email protected]@[email protected]@2HB) 已经在 json_vc71_libmt.lib(json_writer.obj) 中定义
3>json_vc71_libmt.lib(json_value.obj) : error LNK2005: "public: static int const std::numeric_limits<unsigned __int64>::digits10" ([email protected][email protected][email protected]@@2HB) 已经在 json_vc71_libmt.lib(json_writer.obj) 中定义

解决方案:lib_json工程上右键属性页--配置属性--C/C++---语言---禁用语言扩展,选为“否”,如下图:

visual stdio 2015 编译jsoncpp遇到的常见问题

2.  2>json_vc71_libmt.lib(json_writer.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”(jsontest.obj 中)
2>json_vc71_libmt.lib(json_writer.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MT_StaticRelease”(jsontest.obj 中)
2>json_vc71_libmt.lib(json_value.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”(jsontest.obj 中)

原因:jsontest是release版本,而链接的库是debug版本,把属性---C/C++---代码生成----运行库改为MT,具体如下:

visual stdio 2015 编译jsoncpp遇到的常见问题

修改为:

visual stdio 2015 编译jsoncpp遇到的常见问题