本人层在2010年就做过这方面的简单研究(http://blog.csdn.net/boweirrking/article/details/5477062),那时候没有深入思考过这其中的原理,最终给出的方法也是未经完全测试的。这几天突发奇想,把这个问题又重新捡起来研究了一番,终于有了一个比较满意的结果。不敢独享,故拿出来与大家分享。
此文尤其推荐那些对VC6.0有着无比怀旧情节的人来看:)
首先来简单对比一下两套系统:
VS2010,自带10.0版本的MFC、CRT等DLL库,新的编译器(部分支持C++ 11标准、包括LAMBDA表达式),功能强大而完善的IDE环境。新的安全特性与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时代就已经是随着操作系统捆绑发布的。这对于一个中小型程序的发布来说