MFC支持UNICODE问题//cannot open file mfc42u.lib问题解决

本文详细介绍了如何在MFC项目中启用Unicode支持,包括必要的宏定义、编译配置调整及常见错误解决方法,如LINK错误和找不到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值