首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reduce exe文件

Reduce exe文件
EN

Stack Overflow用户
提问于 2011-09-13 15:59:22
回答 5查看 11.9K关注 0票数 20

使用Delphi (或者一般的任何工具,当然,如果有),有没有可能减少exe文件的大小,删除所有不使用但存在的代码?

(例如,存在但从未调用的函数或过程)。

我记得在Pascal中,使用unit (没有对象)编译器只包含真正使用的过程和函数,并且会从最终的exe中去掉unit中未使用的例程。

在Object-pascal中,我记得在Delphi1中,对象的所有成员都包含在exe中;

在Delphi-XE2之前有什么变化吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-13 16:08:39

如果你没有使用RTTI,你可以把这个添加到你的.dpr文件的顶部(紧跟在program之后),以删除额外的RTTI信息:

代码语言:javascript
复制
{$IFOPT D-}{$WEAKLINKRTTI ON}{$ENDIF}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

如果你想把它从所有的RTL/VCL单元中剥离出来,那么你也需要在你的项目文件中包含这些单元,这样上面的设置才能生效。我不建议这样做,因为我不认为减少可执行文件的大小值得编译您自己的RTL/VCL的复杂性。

您还可以在.dpr文件中的某个位置添加以下内容:

代码语言:javascript
复制
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}

这将剥离.exe中不需要的重定位信息。不要将其添加到DLL或包中!

票数 20
EN

Stack Overflow用户

发布于 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文件中存储较少的属性

票数 8
EN

Stack Overflow用户

发布于 2011-09-13 17:04:34

如果您的目标是减小可执行文件的大小,您可以使用压缩它的工具,并允许在未压缩的情况下执行它。(=不是拉链)

例如,您可以检查UPX,它可以很好地与delphi程序一起工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7398580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档