您的位置:首页 > 职场人生

用VS2010(或2013)建立纯粹的MFC4.2应用程序

2014-04-27 08:52 232 查看
导读:这篇文章是介绍用VS2010(2013)来建立基于MFC4.2的应用程序的技术方案。与其说是技术方案,他更像一个极客的恶作剧共享。但是对于那些还“深爱”着VC6和MFC4.2的人,就像我一样,他也是一个福利。
背景:MFC 4.2版是具备Microsoft Visual Studio C++ 6.0功能(又叫VC6)的开发工具。MFC 10.0版是具备Microsoft Visual Studio 2010功能又叫(VS2010)的。 跟VS2010相比,VC6有很多缺陷,令程序员们很不爽。但是VC6的优势是WindowsXP之后MFC42(u).dll MSVCRT.dll MSVCP60.dll 配置了Windows OS。也就是说你不需要亲自分配公共动态链接库的运行时间。另一方面,如果你用VS2010建立应用程序,你必须协助程序分配和释放MFC100(u).dll MSVCR100.dll 和MSVCP100.dll。这很不方便,特别是当我们写或分享一个只有50K的工具时。所以用VS2010来开发基于MFC4.2的应用程序是不错的。
怎么建立: 建立之前,我们先要安装最新的WindowServer2003SP1平台SDK(http://www.microsoft.com/en-us/download/details.aspx?id=15656)。我们把他安装在D:\PlatformSDK.然后我们用VC6创建一个新的MFC 程序,然后用VS2010打开。点“是”吧VC6项目转换成VS2010 VC++项目。之后,通过配置VS2010VC++项目的“VC++目录”,我们可以用MFC4.2的头文件编译你的项目。1.设置可执行路径为$(ExecutablePath),2.设置包含路径为d:\PlatformSDK\Include;d:\PlatformSDK\Include\mfc;d:\PlatformSDK\Include\atl;d:\PlatformSDK\Include\crt。3.设置参考路径为ENPTY。4.设置库路径为d:\PlatformSDK\Lib;d:\PlatformSDK\Lib\MfcLib_x865.设置排除路径为EMPTY。你必须自己建立目录d:\PlatformSDK\Lib\MfcLib_x86,然后复制D:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib的全部文件到新建的目录里。然后从D:\Program Files\Microsoft Visual Studio\VC98\Lib复制msvcrt.lib msvcrtd.lib msvcprt.lib msvcprtd.lib到刚才建立的目录里。(假设VC6是安装在D:\Program Files\Microsoft Visual Studio)。现在我们可以用MFC4.2类库建立应用程序。项目要成功编译,但在运行文件时会报很多错误,如:

这标记符会自动地被VS2010的编译器利用。显然,他并不支持通过MFC4.2解决这些问题,我提取VS2010的msvcrt.lib里的所有文件(包含在$VS2010_Install_Dir\VC\lib),然后搜索那些没有解决的标识符。经过长时间的分析查找,我成功地解决了那些文件所有的链接错误。那绝对是件困难的工作,不信你可以试试。现在项目能够成功的编译和运行了。
怎么验证结果:通过用Dependency Walker, Depends.exe(包含在VC6中,也可以从网上下载)我们发现DLLs静态的链接我们的应用程序。如下:



截图清晰的告诉我们MFCAPP.exe只能用MFC4.2DLLs代替MFC10.0DLLs。
用代码 我把VS2010需要的文件包装到Static LIB文件中,你们可以从这篇文章下载,而不用做那些困难枯燥的工作。我很高兴看见任何的意见或成果。你需要做的只是在你的代码里添加两行代码:#include"crtnew.h"#pragma comment(lib,"crtnew.lib")如果你的应用程序以Release and Non-Unicode(MBCS)模式建立,你会遇见这样一个错误:error LNK2019:unresolved external symbol __CrtDbgReport.这种情况下,用宏“CRTNEW_RESOLVE_CRTDBGREPORT_LINK_ERROR();”可以解决它现在享受MFC4.2开发吧!顺便说一下,你可以在你的MFC4.2项目中用Lambda expressions and other C++ 11 features是不是很酷!!
文章转自:http://www.codeproject.com/Tips/764500/Use-VS-or-to-build-pure-MFC-Apps在下学生初涉IT,翻译此文只是为了英语练习,以上内容多有错误,多包涵望大神,改正指导。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐