本人首次使用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已经搞了很久,都不行,请问有谁可以帮帮小弟
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已经搞了很久,都不行,请问有谁可以帮帮小弟
解决方案 »
- 在 IE 的 url 地址栏中输入网址时候,一般都会自动弹出一个下拉的提示栏,这个提示栏是怎么出来的?
- 如何枚举出我现在打开所有应用程序的标题?就如Spy++一样。
- 灰度图的疑问
- 高分求教文本显示问题!!
- 连接WEB服务器都正常,但是就是返回400的错误
- 如何调用和显示其它程序?
- 关于属性表的问题,回答一定给分,谢谢
- vc 多线程 间 通过postmessage 通信
- 请问如何用VC编程实现改变光驱的盘符?(67分!!!!!!!!!!!!!!!!!!!!!!!!!!!)
- 用VC写的ISAPI Filter为何不导出DllMain( )函数?
- 如何将 list control 分栏?
- irrlicht3D引擎的第三人称摄像机怎么打
我改了之后还是出现一大推重定义的错误:
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
jsoncpp-src-0.5.0和你的工程运行库要保持一致恰巧今天遇到相同的问题,留给后来的人吧
保持一致没错,编译静态库的时候,运行时库改成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
把编译出来的lib放到工程文件中
然后文件中使用#pragma comment(lib,"json_vc71_libmtd.lib") 引用
编译通过