首页
社区
课程
招聘
[求助]链接 Link C 运行时库时出现 LNK2005 错误
发表于: 2005-7-4 16:23 5411

[求助]链接 Link C 运行时库时出现 LNK2005 错误

2005-7-4 16:23
5411
最近在编程的时候出现错误,与下面的类似
网上的资源看不懂,向各位请教!
资料原地址:http://support.microsoft.com/?scid=kb;zh-cn;148652&spid=2990&sid=global

--------------------------------------------------
在 MFC 库之前链接 Link C 运行时库时出现 LNK2005 错误

症状
当 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 库。
----------------------------------------------------------

什么叫弱外部连接??

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
2
这个问题已经解决
对于这种错误是由重定义引起的(在工程中对某一文件多次包含)
但尝试用条件编译也不能解决问题。

可以用“extern 变量”解决。

但具体产生该错误的原理还是不清楚。
2005-7-7 09:41
0
游客
登录 | 注册 方可回帖
返回
//