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

Я недавно использовал Delphi XE, но размер EXE очень большой из-за RTI (я думаю)

Как удалить RTI, и могу ли я сделать мой размер приложения столь же малым, как приложение Delphi 2009 (490 КБ) без сжатия; и какая польза от ртти

5 ответов

Решение

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

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

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

Проверьте эту полезную статью

Shrinking large Delphi 2010 executables - removing RTTI properly

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

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

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

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

Другие вопросы по тегам