MFC程序减少体积的方法

MFC程序减少体积的方法

我们先新创建一个MFC程序:

 

去掉安全开发周期检查,在静态库中使用MFC


默认




创建好之后我们编译看一下体积:

DEBUG:9MB

 

RELEASE:3MB(优化代码)

 

可以看到MFC框架包含的运行库还是非常多的,但是我们在创建MFC工程的时候以(对话框),有两个选项:

 

HTML对话框,是以HTML超文本文件标记来描述对话框

而无增强的MFC控件是指:对一些原基础控件进行增强,继承重写,这些增强的组件会比原组件支持更多的扩展性功能,这些库不会呈现在控件表里,而是以库文件形式存在,.h形式包含,一般都是基础控件类前面加一个C比如CBUTTON,增强控件:CCBUTTON,但是我们只是想写一个简单的对话框控件,我们用不到,所以我们可以把它去除掉:

在新建一个MFC工程:

 

编译后体积大小:

DEBUG7MB

 

Release1MB

 

注意选择无增强MFC控件后编译可能会报重定义的错误:

 

这里我们在stafx.h文件中把这一行代码去掉即可!

 

原因分析:

在不使用无增强的MFC控件之后,MFC工程引用了其他win32静态库,而MFC底层是Win32API实现的,所以导致了静态库重复加载,将这行宏去掉,其它的头文件在编译时就会加载Win32静态库!

因为MFC在编译时会加载很多运行时库,某些库可能根据此宏定义来确定是否加载某些Win32库!