【问题标题】:Delphi XE8 Console App code sizeDelphi XE8 控制台应用程序代码大小
【发布时间】:2015-08-04 14:08:19
【问题描述】:

我有一个小控制台应用程序,我在安装程序中使用它来设置注册表设置和日期内容。它只有 80 行代码,没有单元,全部在主程序文件中完成。最初是在D2007编译的,编译后的exe大小为84kB。

我正在尝试以 XE8 32 位编译文件,其编译大小为 1MB。

我预计新版本会有所增加,但以任何标准来看,12 倍都非常糟糕。

它是在发布模式下编译的,所有调试选项都关闭了。

uses 子句仅包括“registry,Windows,dateutils,SysUtils”。

这是正常的还是我错过了一些其他要关闭的设置?

【问题讨论】:

  • 请出示 MCVE。
  • 在当今时代,1Mb 真的值得花精力去寻找或寻找减少生成的可执行文件大小的解决方案吗?
  • 安迪,控制台应用程序没有区别。随着时间的推移,EXE 的大小一直在增加,如果大小至关重要(或使用 KOL,如前面问题中提到的答案之一),除了坚持使用旧版本之外,您实际上无能为力。正如@Craig 所提到的,当 XE8 的 ISO 下载超过 7 GB 时,安装实用程序中 1 MB 大小的差异真的有意义吗?
  • @DalijaPrasnikar 呈现的场景是 80 行代码。因此,这些担忧不那么重要。提问者可以决定如何进行。有人想知道为什么安装程序不是很诚实。

标签: delphi delphi-2007 delphi-xe8


【解决方案1】:

问题在您的使用列表中。您正在使用 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.RTTISystem.Classes 执行上述操作会将控制台大小减少到 417 KB。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 2019-01-30
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2012-06-26
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多