在静态库中使用MFC导致库冲突,找到一个或多个多重定义的符号
2013-05-30 11:23
471 查看
本来工程在共享库中使用MFC是没问题的。改为在静态库中使用MFC就出现了下面的问题。
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义
1>msvcrtd.lib(MSVCR100D.dll) : error LNK2005: _wcsrchr 已经在 libcmtd.lib(wcsrchr.obj) 中定义
1>libcmtd.lib(crt0init.obj) : warning LNK4098: 默认库“msvcrtd.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
1>G:\MFCProjiect\VideoLog\Debug\VideoLog.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
在网上查了一下,都说要忽略某个默认库。
忽略libcmtd.lib后
1>Strmbasd.lib(mtype.obj) : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/OPT:ICF”规范)
1>uafxcw.lib(appcore.obj) : error LNK2001: 无法解析的外部符号 ___wargv
1>uafxcw.lib(appcore.obj) : error LNK2001: 无法解析的外部符号 ___argc
1>G:\MFCProjiect\VideoLog\Release\VideoLog.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>
1>生成失败。
忽略msvcrtd.lib后
1>Strmbasd.lib(mtype.obj) : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/OPT:ICF”规范)
1>Strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 __imp___vsnwprintf
1>Strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 __imp___vsnprintf
1>G:\MFCProjiect\VideoLog\Release\VideoLog.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>
1>生成失败。
解决方法:
问题解决,收工。
或者还是在共享库中使用MFC
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义
1>msvcrtd.lib(MSVCR100D.dll) : error LNK2005: _wcsrchr 已经在 libcmtd.lib(wcsrchr.obj) 中定义
1>libcmtd.lib(crt0init.obj) : warning LNK4098: 默认库“msvcrtd.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
1>G:\MFCProjiect\VideoLog\Debug\VideoLog.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
在网上查了一下,都说要忽略某个默认库。
忽略libcmtd.lib后
1>Strmbasd.lib(mtype.obj) : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/OPT:ICF”规范)
1>uafxcw.lib(appcore.obj) : error LNK2001: 无法解析的外部符号 ___wargv
1>uafxcw.lib(appcore.obj) : error LNK2001: 无法解析的外部符号 ___argc
1>G:\MFCProjiect\VideoLog\Release\VideoLog.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>
1>生成失败。
忽略msvcrtd.lib后
1>Strmbasd.lib(mtype.obj) : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/OPT:ICF”规范)
1>Strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 __imp___vsnwprintf
1>Strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 __imp___vsnprintf
1>G:\MFCProjiect\VideoLog\Release\VideoLog.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>
1>生成失败。
解决方法:
在Preprocessor中定义_AFXDLL, PROJECT->SETING->C/C++->PREPROCESSOR->定义 _AFXDLL,完毕。 如果它提示:fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds 就这样改: C/C++->Code Generation->Multithread DLL (即实现/MD选项)
问题解决,收工。
或者还是在共享库中使用MFC
相关文章推荐
- 使用opencv和MFC中的类编译时找到一个或多个多重定义的符号解决方案
- 使用vs编译出现 ”error LNK1169: 找到一个或多个多重定义的符号“的错误
- C++ “error LNK1169: 找到一个或多个多重定义的符号”的解决方法
- fatal error LNK1169: 找到一个或多个多重定义的符号
- C#--第九周实验--任务3--定义一个静态成员方法,使用Random实现从一组数中随机抽取n个不重复的数。
- vs2010 fatal error LNK1169: 找到一个或多个多重定义的符号
- fatal error LNK1169: 找到一个或多个多重定义的符号
- fatal error LNK1169: 找到一个或多个多重定义的符号[转]
- 找到一个或多个多重定义的符号
- C++ error LNK1169:找到一个或多个多重定义的符号 解决
- C++ “error LNK1169: 找到一个或多个多重定义的符号” 解决方法
- fatal error LNK1169: 找到一个或多个多重定义的符号
- error LNK1169: 找到一个或多个多重定义的符号
- 错误 3 error LNK1169: 找到一个或多个多重定义的符号
- C#--第九周 任务3--定义一个静态成员方法,使用Random实现从一组数中随机抽取n个不重复的数
- fatal error LNK1169: 找到一个或多个多重定义的符号
- error LNK1169: 找到一个或多个多重定义的符号”的解决方法
- 关于链接过程中出现的“找到一个或多个多重定义的符号”和“无法解析的外部符号”错误的探究
- 找到一个或多个多重定义的符号
- "error LNK1169: 找到一个或多个多重定义的符号"另外的解决办法