我有一个小的控制台应用程序,我在安装程序中使用它来设置注册表设置和日期的东西。它只有80行代码,没有单位,都在主程序文件中完成。它最初是在D2007中编译的,编译时的exe大小是84kB。
我正在尝试在XE8 32位中编译该文件,其编译大小为1MB。
我预计新版本会有所增加,但任何标准都要大12倍。
它已在发布模式下编译,所有调试选项都已关闭。
uses子句仅包含“registry,Windows,dateutils,SysUtils”。
这是正常还是我错过了其他一些设置才能关闭?
答案 0 :(得分:2)
问题出现在您的使用列表中。您使用的System.Win.Registry
使用的System.Classes
使用System.RTTI
。
(以下尺寸适用于XE4,但XE8不应太远)
使用中只有System.SysUtils
的空控制台应用程序大小为122 KB。添加System.RTTI
,最终会得到962 KB。
解决方案是取出使用过的RTL单元,将它们复制到项目文件夹中,然后将{$WEAKLINKRTTI ON}
和{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
添加到它们中。
例如,对System.RTTI
和System.Classes
执行上述操作会将控制台大小减小到417 KB。