C和MFC链接错误Link2005
来源:互联网 发布:大连淘宝模特 编辑:程序博客网 时间:2024/04/29 22:27
症状
当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现以下 LNK2005 错误之一:
nafxcwd.lib(afxmem.obj) :error LNK2005:
"void * __cdecl operator new(unsigned int)"(??2@YAPAXI@Z) already
defined in LIBCMTD.lib(new.obj)
nafxcwd.lib(afxmem.obj) :error LNK2005:
"void __cdecl operator delete(void *)"(??3@YAXPAX@Z) already defined
in LIBCMTD.lib(dbgnew.obj)
nafxcwd.lib(afxmem.obj) :error LNK2005:
"void * __cdecl operator new(unsigned int,int,char const *,int)"
(??2@YAPAXIHPBDH@Z) already defined in LIBCMTD.lib(dbgnew.obj)
mfcs40d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in
MSVCRTD.LIB (dllmain.obj)
mfcs42d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in
msvcrtd.lib(dllmain.obj)
原因
CRT 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。
解决方案:强制链接器按照正确的顺序链接库
微软提供了两种解决方案,第2种我没有看懂,第1种我用了,简单搞定(我下面的说法可能更接近中国人的习惯):
选择:菜单“项目”-->“设置”->链接-->Input。
在第一行“对象/库模块”中最前面输入Nafxcwd.lib;Libcmtd.lib
在第二行“忽略库”框中,输入Nafxcwd.lib;Libcmtd.lib。
确定,重新链接,通过!
http://support.microsoft.com/?scid=kb;zh-cn;148652&spid=2990
- C和MFC链接错误Link2005
- link2005链接错误
- VC++的链接错误LINK2005
- 静态链接和动态链接库混用导致的链接错误LINK2005
- LINK2005"符号已定义"的链接错误
- link2005错误
- 错误link2005
- LINK2005错误
- link2005 错误
- LINK2005错误
- Link2005----设置为动态链接和静态链接的问题
- 为什么会出现LINK2005"符号已定义"的链接错误?
- 解决Link2005错误
- VC:LINK2005错误原理-
- 连接重复错误LINK2005
- Link2005错误解决方法
- 链接错误LNK2005 在MFC库之前链接C运行时库导致的链接错误
- 关于 加载第三方库的时候出现link2005 链接错误的解决办法
- 【leetcode】Climbing Stairs
- jQuery筛选器children()案例详解(图文)_jquery_脚本之家
- opencv中setMousecallback的用法
- 关于Java子类访问父类的私有变量
- 注入语句详解---get注入、搜索型注入、cookie注入等
- C和MFC链接错误Link2005
- Lambda表达式摘录
- dojo
- 对AttributeSet和defStyle的理解
- postgreSQL调用存储过程使用refcursor的几种方法
- 在DIV里面的背景图片上添加超链接
- 巧用mysqld_multi实现多主对一从的mysql复制
- linux命令dd
- 表的连接方式:NESTED LOOP、HASH JOIN、MERGE JOIN(修改)