MFC问题集锦

error RC2104:undefined keyword or keyname:SS_REALSIZECONTROL 错误解决

这个解决方法似乎并不是正常的方式因为rc文件是自动生成的

编辑RC文件代码,头文件加入 #include <windows.h>

uafxcwd.lib new already defined

1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new_scalar.obj)
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(delete_scalar.obj)
1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete_array.obj)
1>D:\project\videoHelper\Debug\videoHelper.exe : fatal error LNK1169: one or more multiply defined symbols found

处理方法
做如下改动,注意顺序

debug版本
附加依赖库:uafxcwd.lib;LIBCMTD.lib;
忽略特定默认库:LIBCMTD.lib;uafxcwd.lib

release版本
附加依赖库:uafxcw.lib;LIBCMT.lib;
忽略特定默认库:LIBCMT.lib;uafxcw.lib

错误原因是由于这二个库有各自的new和delete,这是冲突的,需要指定顺序。正确加载库的顺序是uafxcw.lib Libcmtd.lib,而默认的是Libcmtd.lib uafxcw.lib。

__CRT_RTC_INIT 已经在 libcmtd.lib(init.obj) 中定义

libvcruntimed.lib(chkesp.obj) : error LNK2005: __CRT_RTC_INIT 已经在 libcmtd.lib(init.obj) 中定义

解决方案3:

在项目属性页-》连接器-》命令行-》附加选项中 添加/force