今天編譯一個帶mfc的控制檯程序,出現瞭如下鏈接錯誤:
mfcs90d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
網上找了一下,原來是CRT 庫對某些函數使用弱外部鏈接導致的。
microsoft給出瞭解決辦法:http://support.microsoft.com/kb/148652
由於其給出的解決方案是基於VC6.0的,因此我在VS2008編譯器上實踐如下:
進入工程的Properties,然後Linker的input下,在“Additional Dependencies”中填入 mfcs90d.lib MSVCRTD.lib,然後在Ignore Specific Library中填入mfcs90d.lib;MSVCRTD.lib,再鏈接即可通過。
其實也就是手動指定兩個庫的鏈接順序罷了。(先鏈接MFC庫,再鏈接CRT庫)