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

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

3>json_vc71_libmt.lib(json_value.obj) : error LNK2005: "public: static int const std::numeric_limits::digits10" (?digits10@?$numeric_limits@G@std@@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::digits" (?digits@?$numeric_limits@J@std@@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::digits10" (?digits10@?$numeric_limits@_K@std@@2HB) 已经在 json_vc71_libmt.lib(json_writer.obj) 中定义

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

visual stdio 2015 编译jsoncpp遇到的常见问题_第1张图片

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遇到的常见问题_第2张图片

修改为:

visual stdio 2015 编译jsoncpp遇到的常见问题_第3张图片

你可能感兴趣的:(c++,json)