如何为整个项目设置$ RTTI指令?

Mas*_*ler 4 delphi rtti delphi-2010

我正在努力将一个旧项目从Delphi 2007迁移到Delphi 2010.我发现有一件事是生成的可执行文件的大小增加了一倍以上,而且原始版本已经很大了.(超过50 MB.)我怀疑它与扩展RTTI有很大关系.

由于该项目早于Delphi 2010,因此它不会在任何地方使用扩展的RTTI,我希望保守包含它.有没有办法使用"项目选项"对话框全局设置{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}为默认值?我曾期望在$WEAKLINKRTTI某个地方有一个选择,但是我没有看到它们.

有没有人知道这是否可以从"传递给编译器的附加选项"字段或其他方式完成?我真的不想为项目中的每个单元添加一个包含文件,因为有几千个...

Ste*_*nke 5

自XE6以来,$ RTTI指令的行为已经改变,因为它实际上是一个错误,因为它应该是当前单元的本地(并且实际上记录为自Delphi 2010以来).

即使在一个单元中也可能使用该指令会产生致命的影响,因为由于该错误,它基本上切换了影响下列单元的全局标志(如编译顺序).


Fra*_*ois 3

您可以尝试使用dcc32 \xe2\x80\x93$weaklinkrtti命令行选项。(喜欢{$WEAKLINKRTTI ON})。
\n但这并没有影响到{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}各个单位。
\n最好的选择是将其放在包含文件中每个单元的顶部。
\n但是对于 VCL/RTL 来说它不会这样做,它仍然会膨胀......

\n\n

更新:还要确保比较可比的内容。例如,验证是否在新的 D2010 项目的链接器选项中不包含调试信息,而在 D2007 项目中可能没有该信息...

\n