为什么delphi编译生成的exe文件这么大

delphi 编译生成的 exe 文件,占用磁盘字节数比较大的原因在于,delphi 编译的文件中包含有其他的数据信息更多。

以下在 delphi xe 10 中,建立一个只包含空窗体的工程,通过多种配置进行编译,生成的 exe 文件大小的测试:

1、通常 delphi 的文件为了调试方便,默认新建工程进行编译的 exe 文件,是包含有 Debug 信息的,其生成的 exe 文件大小约为10.5M:

 

 

2、如果将去除调试数据,使用发布版(Release)进行编译,则生成的文件大小约 2.1 M,exe 文件占用大幅减少,可见 debug 占用了很大的磁盘空间:

 

3、进一步关闭 RTTI(Run-Time Type Information) 反射机制,最后生成的exe 文件约 1.69M:

 

禁用的方法很简单,就是要在工程(dpr文件中。Delphi2010下项目文件是dproj文件,但dpr文件仍然是默认的编写代码的项目文件)的Uses语句前添加下面的定义就可以了:

{ Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) }

{$IF CompilerVersion >= 21.0}

{$WEAKLINKRTTI ON}

{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

{$IFEND}

 

简单经过以上3步,delphi 生成的 exe 文件大小已经从最初的 10.5 M,减小到 1.69 M。

 

此外,诸如:低版本的 delphi 使用 AnsiString 作为缺省字符集,而高版本使用 UniCode 作为字符集等因素,也会使得 exe 文件增大。

 

另外大家还可以用upx、aspack压缩一下,那样EXE就会更小了。

THE END