首页
社区
课程
招聘
[讨论]现在VC6和VC2010,编译到最小的EXE体积为多少?要求能在Win8下运行
发表于: 2013-12-11 10:19 11694

[讨论]现在VC6和VC2010,编译到最小的EXE体积为多少?要求能在Win8下运行

2013-12-11 10:19
11694
昨天有个需要,精简下EXE,发现VC6没法做到以前的4K了,郁闷

需求:
1个简单的对话框程序基于DialogBoxParam的,指定入口以减小体积,其它的能减的都减

VC6:
最小能做到12K
文件头4K,代码段合并数据段4K,资源4K
不能增加对齐选项,否则无法执行

VC2010:
最小只能做到15K
文件头1K
代码段合并数据段4K,后面不知道是些啥垃圾,占了不小

RADASM,啥选项也没改,默认的:
2.5K
文件头1K,代码512,数据512,资源512

asm编译出来的最小,而且可以执行!
这点VC不知道有没有参数改出来能做到这么小,如果可以合并数据和代码段的话,能到2K

还有个关键问题,就几行代码,VC6生成的EXE用WinHex看,大量数据为0,表示为填充数据,真实代码或数据很小,很好理解,但VC2010不知道搞了些什么,里面好多数据,这些数据还影响了代码体积

哪位大虾能上传个4K的基于2010的对话框工程上来膜拜下吧

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
vc6 2.5k的,Win8没测试,Win7x64是可以的
上传的附件:
2013-12-11 10:51
0
雪    币: 652
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
asm估计就最小了吧。5k左右吧
2013-12-11 11:13
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
你的能运行,求工程,参考下

另,方便测试下2010或2012或2013吗?做一个就行了,看最小的能做到多小
2013-12-11 11:54
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
我上面都做到2.5K了,5K都没意义啦
2013-12-11 11:57
0
雪    币: 27
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
VC6 VC2010,都不调用C库的情况下,去掉GS等选项,设置入口点,编译出来的东西一边大。
2013-12-11 12:12
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
代码就这么点,工程不需要配置,加个对话框即可。加上合并节的话可能会更小

#include <Windows.h>
#include "resource.h"

#pragma comment(linker, "/Opt:nowin98")

BOOL CALLBACK DlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_SYSCOMMAND && wParam == SC_CLOSE)
    {
        EndDialog(hwndDlg, 0);
    }

    return FALSE;
}

void WinMainCRTStartup()
{
    ExitProcess(DialogBoxParam(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc, 0));
}
2013-12-11 12:14
0
雪    币: 102
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个压缩一下应该可以在1k以下,zip文件只有几百B
2013-12-11 13:32
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
知道了,你的之所有小,是#pragma comment(linker, "/Opt:nowin98")这句话导致的,确实有用,VC6能小到3K

但VS2010编译出来的还有14K,不知道占在哪了
2013-12-11 14:00
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
只要编译出来的程序小就行了,压缩不还得解压才能执行,意义不大
2013-12-11 14:04
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
压缩壳,比如fsg,能减小不少文件体积
2013-12-11 14:08
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
是,但我的代码量本来就很小了,4K以内的源文档,压缩壳压不了了
2013-12-11 14:10
0
雪    币: 102
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
像这个附件,绝对是压缩过的(虽然我认为压缩的意义不大)
上传的附件:
2013-12-11 14:17
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
你这是dos程序吧,不是win32程序,没有win32的一些规范,所以小一些是可能的
但我的是win32程序,结构就不一样,应该不能同等方法做吧
2013-12-11 14:23
0
雪    币: 11120
活跃值: (17643)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
来看各位的讨论的,了解一下情况
2013-12-11 17:00
0
游客
登录 | 注册 方可回帖
返回
//