繁体   English   中英

delphi xe禁用RTTI

[英]delphi xe disable RTTI

我最近使用了delphi xe,但由于rtti(我认为),exe大小非常大

如何删除rtti,我可以使我的应用程序大小与delphi 2009应用程序(490 kb)一样小,没有comprssion; 什么是rtti的用途

简而言之(完整的故事由泼溅的答案提供):

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

请注意, 从XE6及更新版本开始,这需要在您要禁用RTTI的每个单元中。 在此之前(XE5及以下),它可以在DPR文件中,并将应用于项目中的所有单元。

阅读Delphi在线帮助 ...

...并搜索Stack Overflow

请记住, $RTTI指令必须包含在应该生效的每个单元中。 请参阅如何为整个项目设置$ RTTI指令?

您的问题与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会给您的应用程序增加如此多的大小开销。 你怎么知道的?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM