因为须要将MFC程序在其它电脑上运行,因此须要将动态连接的MFC改为静态连接,本觉得很简单,没想到连接的时候出现下面的连接错误:函数
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) 库的连接顺序有误时,可能会出现上面的错误。blog
网上的解决方法试了不少都会报错,后来根据上面报错的信息,上面报错是先连接了LIBCMT.lib,再连接uafxcw.lib。可不能够先连接uafxcw.lib,再连接LIBCMT.lib呢?抱着这个想法试了下,果真成功了~~~class