Pet*_*háč 13 delphi executable compilation filesize delphi-2009
最近我经过长时间的停顿后回到Delphi并编写了一个相当简单的实用程序应用程序,我的客户请求支持旧版本...
我知道这些天大小并不重要,但令我感到奇怪的是,单元应用程序在编译时达到了1'084'416 b可执行文件.我写的唯一.pas单位大约是20.8k,主要是因为gui的丰富性.
该uses条款如下:
uses
Windows, Messages, SysUtils, Variants, Classes, Controls, Forms, strutils,
Dialogs, ADODB, DB, DBGrids, ExtCtrls, DBCtrls, StdCtrls, Grids, Menus,
Buttons;
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何方法可以将应用程序的大小减少到300-400k或更少?
War*_* P 17
你做过调试或发布版本吗?(将其发布为更小的尺寸,确保优化已打开,调试信息已关闭)
如果不需要,您是否关闭了RTII(delphi 2010及以上版本)?(EXE尺寸越小.)
主单元的uses子句中的单元数不是猜测EXE大小的好方法.可以这样想:VCL本身是一个大量的代码,数据库层是另一个,你写的东西可能只是EXE大小的一小部分.
要了解您的可执行文件大小,请尝试使用JCL Project Analyzer,或者阅读打开Map选项时生成的MAP文件.这将告诉您可执行文件中的确切内容.
由于各种原因,这将是愚蠢的,但你可以通过使用Delphi 7获得更小的可执行文件.最后,当我创建一个应用程序而我想让它变小时,我会看看需要花多少时间,以及重建所有内容的努力(例如使用vcl替代方案)然后我对自己说,忘了它.
RRU*_*RUZ 13
您可以尝试使用KOL(密钥对象库是一组对象,使用Delphi但不使用VCL 来开发功能(但很小)的32位Windows GUI应用程序).KOL允许创建非常紧凑的Windows32 GUI应用程序(从没有压缩的~11K开始 - 如果使用建议的系统单元替换).大部分代码都转换为内置汇编程序.
另一种选择是使用像UPX这样的exe压缩器.
MapFileStats(DelphiTools.info)是一个很好的(免费)工具,可以让你看到每个单元在你的可执行文件中占用多少空间.我自己的工具DelphiUnitSizes是一种替代方案,除了单位大小外,还显示每个函数或类的大小.
Delphi 2010使默认可执行文件大约增加了30%,可能是因为RTL/VCL单元中包含RTTI,因此您可以使用较旧版本的Delphi来实现较小的exe大小.
正如其他人所说,UPX也是一个很好的工具,但是根据我的经验,病毒扫描仪的误报并不常见.
使用自定义系统单元和UPX压缩可以大大减少Delphi可执行文件的大小.我可以使用基于Delphi的游戏生成器ZGameEditor生成大小小于64kb的exe文件,即使使用Delphi Berlin也是如此.
| 归档时间: |
|
| 查看次数: |
12307 次 |
| 最近记录: |