vs2010静态链接MFC库报链接错误
2014-10-17 10:28
253 查看
由于需要将MFC程序在其它电脑上运行,所以需要将动态链接的MFC改成静态链接,本以为很简单,没想到链接的时候出现下面的链接错误:
在网上找了下原因,说是CRT库对new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现上面的错误。
网上的解决方法试了很多都会报错,后来根据上面报错的信息,上面报错是先链接了LIBCMT.lib,再链接uafxcw.lib。可不可以先链接uafxcw.lib,再链接LIBCMT.lib呢?抱着这个想法试了下,果然成功了~~~
uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj) uafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMT.lib(delete.obj)
在网上找了下原因,说是CRT库对new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现上面的错误。
网上的解决方法试了很多都会报错,后来根据上面报错的信息,上面报错是先链接了LIBCMT.lib,再链接uafxcw.lib。可不可以先链接uafxcw.lib,再链接LIBCMT.lib呢?抱着这个想法试了下,果然成功了~~~
相关文章推荐
- 在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误
- MFC静态链接时的一个错误
- Cocos2d-x win7 + vs2010 配置(如何创建cocos2d-x工程,解决各种头文件包含错误、lib库引用错误 及dll链接错误)
- vs2010中socket链接错误LINK2019
- VC程序采用动态链接库方式且静态链接MFC方法
- 链接错误LNK2005 在MFC库之前链接C运行时库导致的链接错误
- 在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误
- 在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误
- MFC(VS2010平台)链接MYSQL数据库
- vs2010下sort比较函数链接错误问题
- 在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误
- VS2010和VS2008 KB2465361之后,MFC静态链接 EXE体积变大问题
- 转:VS2010和VS2008 KB2465361之后,MFC静态链接 EXE体积变大问题
- 解决vs2010出现一大堆链接错误的问题。
- [转]在Visual C++中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误
- 在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误(转载)
- 从vs2005或者vs2008迁移到vs2010链接错误: fatal RC1106: invalid option: -ologo 修正方法
- 在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误
- VS2010 MFC工程中 错误提示: IntelliSense: 无法打开源文件 "defines.h"
- VS2010 链接错误——无法解析的外部符号ConvertStringToBST