通过删除RTTI缩小exe

Rob*_*ank 4 delphi rtti

在这个问题(链接)中,据说下面的行(在每个单元中)将删除尽可能多的RTTI:

    {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} 
Run Code Online (Sandbox Code Playgroud)

该帖子没有提及它的Delphi版本,但我假设是D2010.但是,当我包含上面的行时,我收到此错误:

    DCC Fatal Error: E2158 System unit out of date or corrupted: 
    missing TVisibilityClasses.
Run Code Online (Sandbox Code Playgroud)

我正在使用D2010的"库存"版本,并且从未做过任何我知道会改变默认安装或库的内容.

有什么建议?TIA

相关问题:链接.

Gie*_*iel 5

确保将"{$ RTTI"行放在"unit unit1"下面 线.

请注意,从XE5及更新版本开始,此指令需要位于要禁用RTTI的每个单元中.在此之前(如在注释中,仅适用于XE4及更低版本),它可以在DPR文件中,并将应用于项目中的所有单元.

  • 使用建议让我发现只有当它在包含文件中时,该行才会失败.将行放入.dpr(谢谢,梅森!)本身就消除了这个问题.Exe大小从35 megs到32 megs.当我们尝试将我们的应用程序发布到CD上时,这很有用.@Remy:感谢DVD的建议.我们担心的是许多客户正在运行没有DVD的旧机器!:-(谢谢大家的帮助! (3认同)