我最近使用了delphi xe,但是由于rtti,exe的大小非常大(我认为)
如何删除 rtti,我可以在不压缩的情况下使我的应用程序大小与 delphi 2009 应用程序(490 kb)一样小吗?rtti有什么用
我最近使用了delphi xe,但是由于rtti,exe的大小非常大(我认为)
如何删除 rtti,我可以在不压缩的情况下使我的应用程序大小与 delphi 2009 应用程序(490 kb)一样小吗?rtti有什么用
简而言之(由飞溅答案中的链接提供的完整故事):
{$RTTI 显式方法([]) 属性([]) 字段([])}
请注意,从 XE6 和更高版本开始,这需要在您要禁用 RTTI 的每个单独单元中。在此之前(XE5 及以下)它可能位于 DPR 文件中,并适用于项目中的所有单元。
您的问题与 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([])}
(*) 请注意,从 XE5 和更高版本开始,这需要在您要禁用 RTTI 的每个单独单元中。在此之前(XE4 及以下),它可能位于 DPR 文件中,并适用于项目中的所有单元。
我不认为是 RTTI 为您的应用程序增加了如此多的大小开销。你怎么知道它是?