作为一个测试,我决定在Delphi 4、5、6、7、2005、2010和XE3中创建一个简单的“Hello world”应用程序。该应用程序仅包含一个TForm以及一个TButton并带有一个OnClick事件,该事件会调用ShowMessage('Hello world')。
下面是每个最终EXE关闭调试后的结果:
有人能解释一下为什么XE3版本比之前的Delphi版本平均大26倍吗?
这是我的XE3项目设置:
![设置2](https://istack.dev59.com/Y47Lj.webp)
下面是每个最终EXE关闭调试后的结果:
![文件大小](https://istack.dev59.com/T3vfM.webp)
这是我的XE3项目设置:
![设置1](https://istack.dev59.com/TeHYa.webp)
![设置2](https://istack.dev59.com/Y47Lj.webp)
你可能只是在将配置更改为“Release”后进行了编译。尝试执行重新构建(不是重新编译)。这将真正激活可执行文件的“Release”配置,可能会使文件大小更小。
对于我来说(Delphi XE2),同一应用程序(发布配置)在 Windows 中报告的大小为:
1.52 MB(1,600,512 字节)
只需将以下几行代码放在你的 .dpr 文件中,可以减小 exe 文件大小 20%。
uses Windows,
{$O+} {$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}
[dcc32 Error] FinalFrontier.dpr(4): E2003 未声明的标识符:'IMAGE_FILE_RELOCS_STRIPPED'
- Jerry Dodgeuses Windows
可以解决该错误信息。 - Kromster嗯...有很多东西可以解释旧版Delphi和新版之间的区别,重要的是支持Unicode (D2009 .. DXE4),所有字符在Unicode中分配2个字节(在D1,D2,D3,D7等中只分配一个字节)
[size-matters]
! - OnTheFly