在编译完成jsoncpp之后,我们得到一个名为json_vc71_libmtd.lib的文件,然而将其部署到vs中之后,却报出如下错误:
msvcprtd.lib(MSVCP100D.dll) : error LNK2005: “public: void __thiscall std::_Container_base12::_Orphan_all(void)” (?_Orphan_all@_Container_base12@std@@QAEXXZ) 已经在 json_vc71_libmtd.lib(json_value.obj) 中定义
1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: “public: struct std::_Iterator_base12 * * __thiscall std::_Container_base12::_Getpfirst(void)const ” (?_Getpfirst@_Container_base12@std@@QBEPAPAU_Iterator_base12@2@XZ) 已经在 json_vc71_libmtd.lib(json_value.obj) 中定义
1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: “public: __thiscall std::_Container_base12::~_Container_base12(void)” (??1_Container_base12@std@@QAE@XZ) 已经在 json_vc71_libmtd.lib(json_value.obj) 中定义
这个是由于生成json_vc71_libmtd.lib的工程和使用json_vc71_libmtd.lib的工程编译选项不一致导致的,只需将其改为一致即可:
如上图所示,将2个工程中运行库改为一致即可保证程序的正确运行。