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
Прочитайте онлайн-справку по Delphi...
... и поиск переполнения стека:
Имейте в виду, что $RTTI
Директива должна быть включена в каждую единицу, где она должна вступить в силу. Смотрите Как я могу установить директиву $RTTI для всего проекта?
Ваша проблема не связана с 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, который добавляет столько накладных расходов вашего приложения. Откуда ты это знаешь?