代码之家  ›  专栏  ›  技术社区  ›  Vibeeshan Mahadeva

delphi xe禁用RTTI

  •  10
  • Vibeeshan Mahadeva  · 技术社区  · 14 年前

    我最近使用了delphi xe,但是由于rtti的原因,exe的大小非常大(我想)

    如何删除rtti,我能在不压缩的情况下使我的应用程序大小小于delphi 2009应用程序(490 kb)吗;rtti的用途是什么

    5 回复  |  直到 14 年前
        1
  •  15
  •   Stefan Glienke    6 年前

    简而言之(splash回答中的链接提供了完整的故事):

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

    请注意 as of XE6 and newer, this needs to be in each individual unit for which you want to disable RTTI. 在此之前(XE5及以下),它可能在DPR文件中,并适用于项目中的所有单元。

        3
  •  7
  •   Eugene Mayevski 'Callback    14 年前

    你的问题与RTTI无关。如果您说的是相对较小的增长(100-200K),这是由于RTL中的额外功能(为Unicode支持等而添加的)。如果您得到500-700K左右的增加,然后检查您是否链接VCL用户界面单位(窗体、控件等)。如果增加3Mb,则启用了额外的调试符号。

        4
  •  4
  •   David Mohaimin Moin    10 年前

    泛型是在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文件中,并适用于项目中的所有单元。

        5
  •  3
  •   Vladislav Rastrusny    14 年前

    我不认为是RTTI给您的应用程序增加了这么多的大小开销。你怎么知道?