本人首次使用json,对这个不怎么了解,之前生成了一个json_vc71_libmtd.lib文件,想通过加载静态库的方式使用。但是编译的时候出现了一大堆冲突的错误,如下:
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) 中定义
出现了很多类库冲突的问题,之后我上网找了一下,知道要改改项目属性,改为:多线程调试 (/MTd),之后编译,就出现了下面的错误:
stdafx.cpp
1>d:\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h(81): fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds搞了这个json已经搞了很久,都不行,请问有谁可以帮帮小弟

解决方案 »

  1.   

    工程(Project)->属性(Properties)->配置属性(Configuration Properties)->c/c++->代码生成(Code Generation)->运行时库(Use run-time library)->多线程调试DLL(/MDd)(Multithreaded DLL/Debug Multithreaded DLL)
      

  2.   

    回复一楼:
    我改了之后还是出现一大推重定义的错误:
    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) 中定义
    ....回复二楼:
    我已经设置为多线程 (/MT),但是还是不行,出现下面的错误:
    d:\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h(81): fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds
      

  3.   

    在Link属性设置页中,忽略msvcprtd.lib
      

  4.   

    这个是因为你的工程需要是DLL版本,你需要重新建立一个/MT依赖的版本
      

  5.   

    LZ 我也遇到你的问题  一样的都怎了2天了  我都要疯了 可以写下你如何解决的吗? QQ495167321帮帮我!
      

  6.   


    jsoncpp-src-0.5.0和你的工程运行库要保持一致恰巧今天遇到相同的问题,留给后来的人吧
      

  7.   


    保持一致没错,编译静态库的时候,运行时库改成MD,使用的地方,运行时库也改成MD,但是,但是,还有一个问题,我用vc6编译的静态库,在vs2008里面使用就不行,在vs2008里面编译的静态库,vs6里面使用同样也不行,具体错误是一大堆的“无法解析的外部符号。。”
    如错误 4 error LNK2019: 无法解析的外部符号 "__declspec(dllimport) class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,char const *)" (__imp_??6std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z),该符号在函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl Json::valueToQuotedString(char const *)" (?valueToQuotedString@Json@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBD@Z) 中被引用 pw_json_edit.lib pw_json_edit_lib_test_vs08
      

  8.   

    jsoncpp中配置为 /MDd 工程中也使用 /MDd
    把编译出来的lib放到工程文件中
    然后文件中使用#pragma  comment(lib,"json_vc71_libmtd.lib") 引用
    编译通过
      

  9.   

    我遇到了相同的问题,改为Multi-threaded Debug (/MTd)就好了!