我最近使用了Delphi Xe,但由于RTTI(我认为),EXE的大小很大

Howto删除RTTI,我可以使我的应用程序大小与Delphi 2009应用程序(490 KB)一样小,而无需进行任何功能; RTTI的用途是什么

有帮助吗?

解决方案

简而

{$ rtti显式方法([])属性([])字段([])}}

注意 从XE6及更新开始时,需要在您要禁用RTTI的每个单元中。 在此之前(XE5及以下)它可以在DPR文件中,并适用于项目中的所有单元。

其他提示

您的问题与RTTI无关。如果您谈论的是相对较小的增加(100-200k),则是由于RTL中的额外功能(用于Unicode支持等)。如果增加了500-700K左右,请检查是否链接VCL UI单元(表格,控件等)。如果您增加了3MB,那么您已经打开了额外的调试符号。

这是因为某些通用功能已添加到系统单元中。仿制药是在2009年添加的,但在系统单元中,一些类在XE和XE2中用仿制药重写。恕我直言

添加此标志以减少尺寸 在DPR文件(项目>查看源)中 到每个单个单元(如XE5)*。

{$SETPEFlAGS IMAGE_FILE_DEBUG_STRIPPED or IMAGE_FILE_LINE_NUMS_STRIPPED or
 IMAGE_FILE_LOCAL_SYMS_STRIPPED OR IMAGE_FILE_RELOCS_STRIPPED}

{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

(*) 注意 从XE5及更新开始时,需要在您要禁用RTTI的每个单元中。 在此之前(XE4及以下)它可以在DPR文件中,并适用于项目中的所有单元。

我认为这不是RTTI为您的应用程序增添太大尺寸的原因。你怎么知道这是?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top