【发布时间】:2011-04-27 21:06:37
【问题描述】:
我最近使用了delphi xe,但是由于rtti,exe文件非常大(我认为)
如何删除 rtti,我可以在不压缩的情况下使我的应用程序大小像 delphi 2009 应用程序(490 kb)一样小吗?还有rtti有什么用
【问题讨论】:
-
你的 exe 有多大?你期待什么?
标签: delphi rtti delphi-xe application-size
我最近使用了delphi xe,但是由于rtti,exe文件非常大(我认为)
如何删除 rtti,我可以在不压缩的情况下使我的应用程序大小像 delphi 2009 应用程序(490 kb)一样小吗?还有rtti有什么用
【问题讨论】:
标签: delphi rtti delphi-xe application-size
【讨论】:
简而言之(由飞溅答案中的链接提供的完整故事):
{$RTTI 显式方法([]) 属性([]) 字段([])}
请注意,as of XE6 and newer, this needs to be in each individual unit for which you want to disable RTTI. 在此之前(XE5 及以下)可能位于 DPR 文件中,并适用于项目中的所有单元。
【讨论】:
我不认为是 RTTI 为您的应用程序增加了如此多的大小开销。你怎么知道?
【讨论】:
您的问题与 RTTI 无关。如果您谈论的是相对较小的增加(100-200K),这是由于 RTL 中的额外功能(为 Unicode 支持等而添加的)。如果您增加了 500-700K 左右,那么请检查您是否链接了 VCL UI 单元(表单、控件等)。如果您增加了 3Mb,那么您已经打开了额外的调试符号。
【讨论】:
这是因为一些泛型功能已添加到 sys 单元中。 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([])}
(*) 请注意,as of XE5 and newer, this needs to be in each individual unit for which you want to disable RTTI. 在此之前(XE4 及以下)可能位于 DPR 文件中,并适用于项目中的所有单元。
【讨论】: