MFC支持UNICODE问题cannotopenfilemfc42u.lib问题解决
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MFC支持UNICODE问题cannotopenfilemfc42u.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放到vc的mfc\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。