标签:
我层2010年这方面的研究进行了简单(http://blog.csdn.net/boweirrking/article/details/5477062),那时候没有深入思考过这当中的原理,最终给出的方法也是未经全然測试的。
这几天突发奇想,把这个问题又又一次捡起来研究了一番,最终有了一个比較惬意的结果。不敢独享。故拿出来与大家分享。
此文尤其推荐那些对VC6.0有着无比怀旧情节的人来看:)
新的安全特性与SHE处理函数。
VC6.0。自带4.2版本号的MFC、CRT等DLL库,非常老的编译器(而且非常不标准),功能勉强够用的IDE环境。
VS2010生成的东西体积小、效率高。可是须要使用的基础支持库众多。
为了公布一个几十k的小程序。还要一并公布msvcr100.dll msvcp100.dll MFC100.dll等等支持库。到眼下为止这些库并非随着操作系统一起公布的。
VC6.0生成的东西优化与安全性有限。
可是一大优势是,它生成的程序,所需的基础支持库,如MFC42.dll ,msvcrt.dll,msvcp60.dll。从Windows XP时代就已经是随着操作系统捆绑公布的。
这对于一个中小型程序的公布来说,无疑是很便利的。
那么,有没有一种办法能够将两者的优势结合起来呢?
答案是肯定的!
以下且听我慢慢道来。(以下步骤和过程都是本人亲自试验成功的)
有了以上这个想法之后,基于“VS2010是向前兼容的”这样一个大前提,我做了大胆的设想与尝试。
首先用VC6.0建立了一个标准的MFC对话框程序。
然后用VS2010打开刚才建立的这个project(吧DSW文件拖放进VS2010),将project转换为VS2010格式的vcxproj
接下来,打开“项目”菜单->“xxx项目属性”->“配置属性”->“VC++文件夹”,进行例如以下设置:
可运行文件文件夹:$(ExecutablePath)
包括文件夹:e:\PlatformSDK\Include;
e:\PlatformSDK\Include\mfc;
e:\PlatformSDK\Include\atl;
e:\PlatformSDK\Include\crt
引用文件夹:留空
库文件夹:e:\PlatformSDK\Lib;e:\PlatformSDK\Lib\MfcLib_x86
源文件夹:留空
排除文件夹:留空
请重点注意。以上用的PlatformSDK使用的是[b]Windows2003 platform sdk[/b]([url=http://www.microsoft.com/en-us/download/details.aspx?id=15656]官方下载地址[/url]),而且如果Platform SDK安装在e:\PlatformSDK
库文件夹Lib\MfcLib_x86的内容是从VC6.0的文件夹“VC98\MFC\Lib”复制出来的MFC4.2的全部lib文件,以及从 “VC98\MFC\Lib”复制出来的MSVCRTD.lib MSVCRT.lib MSVCPRT.lib MSVCPRTD.lib
这样设置完之后,就能够编译了。通常编译都不会有问题。
链接是一定会失败的。
基本上类似下面一些符号链接错误:
error LNK2001:无法解析的外部符号 ___security_cookie error LNK2001: 无法解析的外部符号 ___report_gsfailure error LNK2001: 无法解析的外部符号 __except_handler4 error LNK2001: 无法解析的外部符号 __NLG_Notify error LNK2001: 无法解析的外部符号 __NLG_Destination error LNK2019: 无法解析的外部符号 @__security_check_cookie@4
基本操作步骤就是用Lib工具导出全部的msvcr100.lib里面的obj文件。一个一个的试。
我已经把全部须要的obj文件,打包整合为一个lib文件了。
大家能够直接下载并使用。使用时,仅加入下面两行代码就可以:
#include "crtnew.h" #pragma comment(lib,"crtnew.lib")附带我终于的成果: 把上面的图片保存到本地。重命名为.zip文件,用Winrar就可以打开并解压。
用VS2010或VS2013岂不是非常爽?
2、MFC4.2生成的程序的依赖库是捆绑在操作系统里面的。这一优势在长期之内还是会继续保持。
3、能够在MFC4.2的基础上,使用新的C++语言特性。告诉你。能够直接使用Lambda表达式,你会心动吗?
4、新鲜、好玩。
。
。。。。
这些操作或所有研究的结果。于VS2013于。这同样适用!!
版权声明:本文博主原创文章,博客,未经同意不得转载。
标签:
原文地址:http://www.cnblogs.com/bhlsheji/p/4884371.html