Delphi XE8控制台应用程序代码大小
我有一个小控制台应用程序,我在安装程序中使用它来设置注册表设置和日期。它只有80行代码,没有单元,全部在主程序文件中完成。它最初是在D2007中编译的,编译后的exe大小为84kB 我正在尝试以XE8 32位编译该文件,其编译大小为1MB 我预计新版本会有一些增长,但以任何标准衡量,12倍的增长都是非常糟糕的 它已在发布模式下编译,所有调试选项均已关闭 uses子句仅包括“registry、Windows、dateutils、SysUtils”Delphi XE8控制台应用程序代码大小,delphi,delphi-2007,delphi-xe8,Delphi,Delphi 2007,Delphi Xe8,我有一个小控制台应用程序,我在安装程序中使用它来设置注册表设置和日期。它只有80行代码,没有单元,全部在主程序文件中完成。它最初是在D2007中编译的,编译后的exe大小为84kB 我正在尝试以XE8 32位编译该文件,其编译大小为1MB 我预计新版本会有一些增长,但以任何标准衡量,12倍的增长都是非常糟糕的 它已在发布模式下编译,所有调试选项均已关闭 uses子句仅包括“registry、Windows、dateutils、SysUtils” 这是正常的还是我错过了一些要关闭的其他设置?问题在
这是正常的还是我错过了一些要关闭的其他设置?问题在您的使用列表中。您使用的是使用
System.Win.Registry
的System.class
的System.RTTI
(以下尺寸适用于XE4,但XE8不应太远)
仅使用System.SysUtils
的空控制台应用程序的大小为122 KB。添加System.RTTI
,您将得到962kb的内存
解决方案是取出使用过的RTL单元,将它们复制到项目文件夹中,并向它们添加{$weakinkrti ON}
和{$RTTI显式方法([])属性([])字段([])}
例如,对
System.RTTI
和System.Classes
执行上述操作将把控制台大小减少到417KB。并请显示一个MCVE。在当今这个时代,1Mb真的值得去或寻找一个解决方案来减少生成的可执行文件的大小吗?Andy,控制台应用程序没有什么区别。随着时间的推移,EXE的大小一直在增加,如果大小如此关键(或者使用KOL,如前面问题中提到的答案之一),那么除了坚持使用旧版本之外,你真的没有什么可以做的了。正如@Craig提到的,当XE8的ISO下载超过7GB时,安装实用程序中1MB大小的差异真的有意义吗?@DalijaPrasnikar给出的场景是80行代码。因此,这些担忧并不那么重要。询问者可以决定如何进行。有人想知道为什么一个安装程序不是很诚实。