delphi xe отключить RTTI - PullRequest
       50

delphi xe отключить RTTI

10 голосов
/ 20 октября 2010

Я недавно использовал Delphi XE, но размер exe очень большой из-за rtti (я думаю)comprssion;и какая польза от rtti

Ответы [ 5 ]

15 голосов
/ 20 октября 2010

Короче (полная история предоставлена ​​ссылками в ответе на заставку):

{$ RTTI EXPLICIT METHODS ([]) СВОЙСТВА ([]) ОБЛАСТИ ([])}

Обратите внимание, что для XE6 и новее, это должно быть в каждом отдельном устройстве, для которого вы хотите отключить RTTI. Перед этим (XE5 и ниже) оно может находиться в файле DPR и будет применяться для всех подразделений в проекте.

8 голосов
/ 20 октября 2010
7 голосов
/ 20 октября 2010

Ваша проблема не связана с RTTI. Если вы говорите об относительно небольшом увеличении (100-200 КБ), это связано с дополнительными функциями в RTL (добавлены поддержка Unicode и т. Д.). Если вы получаете увеличение на 500-700 КБ или около того, проверьте, не связаны ли вы с модулями пользовательского интерфейса VCL (формы, элементы управления и т. Д.). Если вы получаете увеличение 3Mb, то вы включили дополнительные символы отладки.

4 голосов
/ 19 июля 2012

Это потому, что некоторые функциональные возможности были добавлены в системные блоки.Обобщения были добавлены в 2009 году, но в системных единицах некоторые классы были переписаны с обобщениями в xe и xe2.imho

Добавьте эти флаги, чтобы уменьшить размер в файле dpr (Project> view source) для каждой отдельной единицы (с 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 и будет применяться квсе единицы в проекте.

3 голосов
/ 20 октября 2010

Я не думаю, что именно RTTI так сильно увеличивает размер вашего приложения. Откуда ты это знаешь?

...