Delphi XE3 EXE文件大小比Dephi 7大25倍

Delphi XE3 EXE文件大小比Dephi 7大25倍,delphi,delphi-7,delphi-2010,delphi-xe,delphi-xe3,Delphi,Delphi 7,Delphi 2010,Delphi Xe,Delphi Xe3,作为测试,我决定使用Delphi4、5、6、7、2005、2010和XE3在Delphi中创建一个简单的“Hello world”应用程序。该应用程序只不过是一个TForm,一个带有OnClick事件的TButton,调用ShowMessage(“Hello world”) 以下是关闭调试后每个最终EXE的结果: 有人能解释为什么XE3版本比Delphi以前版本的平均值大26倍吗 以下是我的XE3项目设置: 更改为“发布”配置后,您可能只进行了一次编译。尝试重新生成(而不是重新编译)。这将真

作为测试,我决定使用Delphi4、5、6、7、2005、2010和XE3在Delphi中创建一个简单的“Hello world”应用程序。该应用程序只不过是一个TForm,一个带有OnClick事件的TButton,调用ShowMessage(“Hello world”)

以下是关闭调试后每个最终EXE的结果:

有人能解释为什么XE3版本比Delphi以前版本的平均值大26倍吗

以下是我的XE3项目设置:


更改为“发布”配置后,您可能只进行了一次编译。尝试重新生成(而不是重新编译)。这将真正激活可执行文件上的版本配置,可能会激活更小的文件大小

对于我(Delphi XE2),Windows为同一应用程序(版本配置)报告的大小为:

1.52 MB(1600512字节)


嗯。。有很多东西可以解释旧版本和新版本之间的区别。。重要的是支持unicode(D2009..DXE4),unicode中的所有字符分配2个字节(在D1、D2、D3、D7中,…它们只分配一个字节)

我解决了这个问题。这要归功于我在开发时99%的时间都在使用Delphi7,而XE3对我来说是新的。尽管我在项目选项下选择了“Release”,并在那里进行了调整,但事实证明,仅仅在那里选择“Release”并不会使项目进入发布模式

谁会想到我还必须使用Project Manager面板并双击“发布”项才能将项目置于发布模式


如果有人好奇的话,最终的EXE现在是2229KB,这只是Delphi 2010之前EXE大小的5倍。

只要将这些行放在.dpr文件中,EXE大小就会减少20%

使用 Windows,

{$O+}
{$SetPEFlags IMAGE\u FILE\u RELOCS\u STRIPPED}

查看评论并回答以下问题:无法重新编程。对我来说是2230KB。@DaleM可能是真的,但2倍大小和25倍大小之间有巨大的差异。再加上2010年。这是XE3.me需要一个标签
[大小很重要]
!你试过多少次了?当然,在XE3中您做了一些其他版本中没有做的事情。尝试创建另一个新的虚拟应用程序。也许你包括了一些你忘记移除的其他单位。不,这不是真正的大问题。每个版本中总是有更多的代码。但最大的变化是新型RTTI,它大大增加了VCL单元的尺寸。但在这种情况下,这是一个简单的调试vs发布版。“重要的事情”是什么?真正地但这只能解释一个不超过2倍的变化。大卫:根据我的经验,exe的大小从2007年到2009年翻了一番,这可能是因为unicode重写了RTL。由于RTTI,D2010再次增加,但是如果你大部分时间都关闭了,它比2007->2009年的峰值要小。你知道你可以在那里创建任意数量的配置吗?假设您有20种不同的构建配置,您正在使用其中的一种。当你去调试那一个配置时,你真的想编译全部20个配置吗?我是说,那要花20倍的时间。换句话说,是的,你需要在这里改变这个。不,我不知道。也许Embarcadero需要为所有使用Delphi 7及以下版本的编码人员提供一份“欢迎来到21世纪”快速入门白皮书,解释什么是新的和重要的。:-)请接受@Steve的回答。IDE的行为与预期的一样。完全合理的是,不同配置选项的设置可以在不更改活动配置的情况下进行编辑。仍然是大小的5倍吗?啊!这并不是说你也必须在项目经理中改变它;你只要在那里换一下就行了。项目选项中的目标只是向您显示该目标的选项,不管这是否是您的实际目标。Delphi确实会生成巨大的可执行文件。我不相信RTTI是原因。编译器在这个问题上效率低下,就像在优化问题上一样。只是Embarcadero不关心可执行文件的大小。但这是一个大问题,特别是对于资源有限的移动应用程序而言。@BasePointer RTTI意味着智能链接器无法剥离未使用的功能。对于大型可执行文件,没有单一的原因,但新风格的RTTI可能是最大的因素。在桌面上,可执行文件的大小在运行时并不重要。这只是下载安装程序的问题。但仅对exe文件执行此操作!Delphi 10.1 Berlin,
[dcc32 Error]FinalFrontier.dpr(4):E2003未声明的标识符:“IMAGE\u FILE\u RELOCS\u STRIPPED”
@jerrydoge adding
使用Windows
修复该错误消息。