代码之家  ›  专栏  ›  技术社区  ›  RobertFrank Picarus

通过删除rtti收缩exe

  •  4
  • RobertFrank Picarus  · 技术社区  · 15 年前

    在这个问题上( link )据说下面的那条线 每个 装置)将尽可能多地移除RTTI:

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

    这篇文章没有提到它使用的Delphi版本,但我假设是2010年版。但是,当我包括上面的行时,我得到这个错误:

        DCC Fatal Error: E2158 System unit out of date or corrupted: 
        missing TVisibilityClasses.
    

    我使用的是“stock”版本的d2010,我从未做过任何我知道会改变默认安装或库的事情。

    有什么建议吗?蒂亚

    相关问题: link .

    2 回复  |  直到 11 年前
        1
  •  5
  •   David Mohaimin Moin    11 年前

    确保将“$rtti”行放在“Unit1;”行下面。

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

        2
  •  2
  •   Jeroen Wiert Pluimers    15 年前

    新的RTTI适用于Delphi2010及更高版本。

    它可以被删除,但是很多东西的功能有限(比如JSON转换、部分数据快照以及许多执行ORM或其他映射的更新的第三方库)。

    不管怎样,依赖价值的东西都消失了。

    “旧风格”RTTI(在Delphi1中引入,但在Delphi2010中仍然存在)无法删除。

    因此:建议仅从您自己的设备中删除RTTI,而不是从RTL和VCL中删除。

    --杰罗恩