MFC程序减少体积的方法
我们先新创建一个MFC程序:
去掉安全开发周期检查,在静态库中使用MFC
默认
创建好之后我们编译看一下体积:
DEBUG:9MB多
扫描二维码关注公众号,回复:
1473329 查看本文章
RELEASE:3MB多(优化代码)
可以看到MFC框架包含的运行库还是非常多的,但是我们在创建MFC工程的时候以(对话框),有两个选项:
HTML对话框,是以HTML超文本文件标记来描述对话框
而无增强的MFC控件是指:对一些原基础控件进行增强,继承重写,这些增强的组件会比原组件支持更多的扩展性功能,这些库不会呈现在控件表里,而是以库文件形式存在,.h形式包含,一般都是基础控件类前面加一个C比如CBUTTON,增强控件:CCBUTTON,但是我们只是想写一个简单的对话框控件,我们用不到,所以我们可以把它去除掉:
在新建一个MFC工程:
编译后体积大小:
DEBUG:7MB多
Release:1MB多
注意选择无增强MFC控件后编译可能会报重定义的错误:
这里我们在stafx.h文件中把这一行代码去掉即可!
原因分析:
在不使用无增强的MFC控件之后,MFC工程引用了其他win32静态库,而MFC底层是Win32API实现的,所以导致了静态库重复加载,将这行宏去掉,其它的头文件在编译时就会加载Win32静态库!
因为MFC在编译时会加载很多运行时库,某些库可能根据此宏定义来确定是否加载某些Win32库!