最近我使用了Delphi XE,但是由于RTTI(我认为)导致exe文件大小非常大。
如何删除RTTI,并使我的应用程序大小与Delphi 2009应用程序(490 KB)一样小,而不需要压缩;以及RTTI的用途是什么。
最近我使用了Delphi XE,但是由于RTTI(我认为)导致exe文件大小非常大。
如何删除RTTI,并使我的应用程序大小与Delphi 2009应用程序(490 KB)一样小,而不需要压缩;以及RTTI的用途是什么。
简而言之(通过 splash 的答案中提供的链接可以获得完整的故事):
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
请注意,从XE6及更新版本开始,您需要在每个要禁用RTTI的单元中使用此代码。 在此之前(XE5及以下版本),它可以在DPR文件中使用,并将适用于项目中的所有单元。
您的问题与RTTI无关。如果您说的是相对较小的增加(100-200K),那么这是由于RTL中的额外函数(添加了Unicode支持等)。如果增加了500-700K左右,请检查是否链接了VCL UI单元(如Forms、Controls等)。如果增加了3Mb,则说明您已经打开了额外的调试符号。
{$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导致应用程序增加了如此多的大小开销。你怎么知道它是这个原因呢?