MFC支持UNICODE問題//cannot open file mfc42u.lib問題解決

1.想在MFC中使用Unicode
    教科書上說要定義UNICODE和_UNICODE兩個宏,前者用於windows.h,後者用於c運行期頭文件,但是你會發現在你的程序中寫:
#ifndef UNICODE
#define UNICODE
#endif
#ifndef _UNICODE
#define _UNICODE
#endif
是沒有用的!必須在Preprocessor definition裏面定義這兩個宏,sizeof(TCHAR)纔等於2!爲什麼不知道,哪位大牛來講一下這兩種定義方式有什麼不同?
    定義這兩個宏之後你會發現你的MFC工程會出一個LINK錯誤:

msvcrt.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16

找不到MFC程序的入口函數WinMain,解決辦法是在ProjectSettings->link->output把Entry設置爲wWinMainCRTStartup。據說這是VC6.0的一個bug,但是我用的是.NET 2003,看來微軟發現這個問題不容易改啊。

    做完這兩步之後不要忘了用TCHAR,_T,lstrcpy這些generic的宏,能同時支持ASCII和Unicode看着要高級點嘛。


問題提出:VC提示找不到mfc42u.lib錯誤(cannot open file "mfc42u.lib")

說明:
LINK: fatal error LNK1104: cannot open file "mfc42u.lib" 表明安裝VC時沒有安裝 Unicode版本

解決問題方法總結:

方法一:
從VC的安裝盤中拷貝文件“MFC42U.LIB”、“MFC42UD.LIB”、“MFCS42U.LIB”、“MFCS42UD.LIB”幾個對Unicode支持的代碼“VC的安裝目錄/VC98/MFC/Lib”下即可,不必要重裝,

lib放到vcmfc\lib下,dll放到windows\system32

方法二:
在build選擇非 Unicode版本進行編譯

方法三:
在Build菜單下面的Set Active Configuation...子菜單裏面設置當前的配置爲Win32 Release 或win32 debug,不要設置成Unicode Release 或unicode Debug。
這個問題是你的編譯配置設置成了unicode的配置,而VC在安裝的時候默認不安裝Unicode的庫,所以找不到mfc42u.lib或mfc42u.dll。

方法四:重新安裝VC,選擇 Full   install

發佈了34 篇原創文章 · 獲贊 7 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章