vs2010靜態連接MFC庫報連接錯誤

  因爲須要將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

相關文章
相關標籤/搜索