德尔福RTTI残疾车

问题描述 投票:10回答:5

我最近用delphi XE但exe文件大小是因为RTTI的非常大的(我认为)

如何删除RTTI,我可以让我的应用程序的大小小的Delphi 2009的应用程序(490 KB)无压缩;什么是使用RTTI的

delphi rtti delphi-xe application-size
5个回答
15
投票

在短(通过链接在飞溅的答案提供完整的故事):

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

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



7
投票

你的问题是不相关的RTTI。如果你是在谈论增加相对较小(100-200K),这是由于在RTL附加功能(增加了对Unicode的支持等)。如果你500-700K增加左右,然后检查是否链接VCL UI单位(窗体,控件等)。如果你3MB增加,那么你已经打开额外的调试符号。


4
投票

这是因为一些仿制药的功能已经被添加到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([])}

(*)注意as of XE5 and newer, this needs to be in each individual unit for which you want to disable RTTI.在此之前(XE4及以下)可能是在DPR文件,并会应用到项目中的所有单位。


3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.