使用Delphi (或者一般的任何工具,当然,如果有),有没有可能减少exe文件的大小,删除所有不使用但存在的代码?
(例如,存在但从未调用的函数或过程)。
我记得在Pascal中,使用unit (没有对象)编译器只包含真正使用的过程和函数,并且会从最终的exe中去掉unit中未使用的例程。
在Object-pascal中,我记得在Delphi1中,对象的所有成员都包含在exe中;
在Delphi-XE2之前有什么变化吗?
发布于 2011-09-13 16:08:39
如果你没有使用RTTI,你可以把这个添加到你的.dpr文件的顶部(紧跟在program之后),以删除额外的RTTI信息:
{$IFOPT D-}{$WEAKLINKRTTI ON}{$ENDIF}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}如果你想把它从所有的RTL/VCL单元中剥离出来,那么你也需要在你的项目文件中包含这些单元,这样上面的设置才能生效。我不建议这样做,因为我不认为减少可执行文件的大小值得编译您自己的RTL/VCL的复杂性。
您还可以在.dpr文件中的某个位置添加以下内容:
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}这将剥离.exe中不需要的重定位信息。不要将其添加到DLL或包中!
发布于 2011-09-13 17:12:06
reduce the application EXE size -优秀文章
(取自上面的链接)
通常,用Delphi创建的EXE文件比用另一种编程语言创建的EXE文件大。原因是VCL。(当然,VCL有很多优点...)
有几种方法可以减小EXE的大小:
01)使用可执行打包程序(UPX,ASPack,...)-UPX
02)使用KOL。
03)在没有VCL的情况下编写应用程序
04)使用ACL (API控件库)
05)使用StripReloc。
06)停用远程调试信息和TD32。
07)您可能希望将代码放在dll中。
08)不要在一个表单上多次放置相同的图片。在运行时加载它们。
09)使用压缩图像(JPG而不是BMP)
10)在DFM文件中存储较少的属性
发布于 2011-09-13 17:04:34
如果您的目标是减小可执行文件的大小,您可以使用压缩它的工具,并允许在未压缩的情况下执行它。(=不是拉链)
例如,您可以检查UPX,它可以很好地与delphi程序一起工作。
https://stackoverflow.com/questions/7398580
复制相似问题