LNK2005 LIBCMT.lib/nafxcw.lib 编译链接错误
2016-12-29 12:12:00 作者: Administrator 来源:互联网,版权归作者所有 浏览次数: 1,063 文字大小:【大】【中】【小】
运行环境:在非MFC程序中,添加MFC支持,静态链接MFC库。
发生错误:
1>正在链接...1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMT.lib(delete.obj) 中定义1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) 已经在 LIBCMT.lib(delete2.obj) 中定义1>D:\work\yuanxx\日志分析\logExtractTool\Release\logExtractTool.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
错误原因:CRT库和MFC库链接时顺序有误。
CRT 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现以下 LNK2005 错误。
解决方法:强制链接器按照正确的顺序链接库!
项目->属性->链接器->输入->附加依赖项,添加:libcpmt.lib nafxcw.lib。
项目->属性->链接器->输入->忽略特定想,添加:nafxcw.lib libcpmt.lib。
服务原则及地区范围
宜兴通达团队,在企业网络维护和企业信息化建设与咨询方面,有10多年经验。
我团队愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!
通达团队提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。
宜兴地区提供上门服务:
- 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
- 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。