MFC工程使用TinyXML的问题

时间:2020-12-24 05:27:47
  最近开始使用TinyXML,发现封装的很好,很好用,在控制台程序中也使用的正常。但是我的一个MFC工程中替换了TinyXML以后编译不通过,都是连接错误,我看似乎主要是TinyXML的STL版本已经包含了STL库,但是我的工程也包含导致的,不知道怎么处理,请教高手。
另外,我工程的设置是 Debug MultiThread Dll.
Linking...
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_strin
g@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in tinyxmld_STL.lib(tinyxml.obj)
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator=(ch
ar const *)" (??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z) already defined in tinyxmld_STL.lib(tinyxml.obj)
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in tinyxmld_STL.lib(tinyxml.obj)
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(void)" (??0_Lockit@std@@QAE@XZ) already defined in tinyxmld_STL.lib(tinyxml.obj)
libcpd.lib(ios.obj) : error LNK2005: "public: void __thiscall std::ios_base::clear(int,bool)" (?clear@ios_base@std@@QAEXH_N@Z) already defined in msvcprtd.lib(MSVCP60D.dll)
libcpd.lib(ios.obj) : error LNK2005: "public: virtual __thiscall std::ios_base::~ios_base(void)" (??1ios_base@std@@UAE@XZ) already defined in msvcprtd.lib(MSVCP60D.dll)
libcpd.lib(ios.obj) : error LNK2005: "protected: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@IAEXXZ) already defined in msvcprtd.lib(MSVCP60D.dll)
libcpd.lib(ios.obj) : error LNK2005: "protected: void __thiscall std::ios_base::_Init(void)" (?_Init@ios_base@std@@IAEXXZ) already defined in msvcprtd.lib(MSVCP60D.dll)
libcpd.lib(locale0.obj) : error LNK2005: "public: class std::locale::facet const * __thiscall std::locale::_Getfacet(unsigned int,bool)const " (?_Getfacet@locale@std@@QBEPBVfacet@12@I_N@Z) already defined in msvcprtd.lib(MSVCP60D.dll)
libcpd.lib(locale0.obj) : error LNK2005: "public: bool __thiscall std::locale::_Iscloc(void)const " (?_Iscloc@locale@std@@QBE_NXZ) already defined in msvcprtd.lib(MSVCP60D.dll)
libcpd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Init(void)" (?_Init@locale@std@@CAPAV_Locimp@12@XZ) already defined in msvcprtd.lib(MSVCP60D.dll)
libcpd.lib(locale.obj) : error LNK2005: "public: __thiscall std::_Locinfo::_Locinfo(char const *)" (??0_Locinfo@std@@QAE@PBD@Z) already defined in msvcprtd.lib(MSVCP60D.dll)
libcpd.lib(locale.obj) : error LNK2005: "public: __thiscall std::_Locinfo::~_Locinfo(void)" (??1_Locinfo@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP60D.dll)
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
nafxcwd.lib(olelink.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(dcmeta.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(oledlgs1.obj) : error LNK2001: unresolved external symbol __mbctype
libcpd.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol _errno
libcpd.lib(xstrcoll.obj) : error LNK2001: unresolved external symbol _errno
libcpd.lib(locale.obj) : error LNK2001: unresolved external symbol _errno
libcpd.lib(wlocale.obj) : error LNK2001: unresolved external symbol _errno
libcpd.lib(xlocale.obj) : error LNK2001: unresolved external symbol _errno
libcpd.lib(xwctomb.obj) : error LNK2001: unresolved external symbol _errno
libcpd.lib(wlocale.obj) : error LNK2001: unresolved external symbol ___mb_cur_max
libcpd.lib(xwctomb.obj) : error LNK2001: unresolved external symbol ___mb_cur_max
libcpd.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___mb_cur_max
libcpd.lib(xwctomb.obj) : error LNK2001: unresolved external symbol ___lc_codepage
libcpd.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___lc_codepage
libcpd.lib(xwctomb.obj) : error LNK2001: unresolved external symbol ___lc_handle
libcpd.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___lc_handle
libcpd.lib(xstrcoll.obj) : error LNK2001: unresolved external symbol ___lc_handle
libcpd.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol __pctype
libcpd.lib(xstrcoll.obj) : error LNK2001: unresolved external symbol ___lc_collate_cp
Debug/MFCDlg.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.

MFCDlg.exe - 38 error(s), 0 warning(s)

5 个解决方案

#1


在工程设置的LIB设置中把msvcprtd.lib忽略掉试试

#2


libcpd.lib也忽略掉

#3


nafxcwd.lib同样

#4


OK了,我把工程改为Debug MultiThread 居然OK了,之前也尝试了,没成功啊,真晕。也没搞懂咋回事,不过多谢各位回复!

#5


你的tinyxml 的 编译 属性 要和 mfc的程序的编译属性一样, 比如都是 使用共享 mfc 库 ,使用 多线程

#1


在工程设置的LIB设置中把msvcprtd.lib忽略掉试试

#2


libcpd.lib也忽略掉

#3


nafxcwd.lib同样

#4


OK了,我把工程改为Debug MultiThread 居然OK了,之前也尝试了,没成功啊,真晕。也没搞懂咋回事,不过多谢各位回复!

#5


你的tinyxml 的 编译 属性 要和 mfc的程序的编译属性一样, 比如都是 使用共享 mfc 库 ,使用 多线程