Domanda

Di recente ho usato Delphi XE, ma Exe Dimense è molto grande a causa di RTTI (credo)

Howto rimuovere RTTI e posso rendere la mia dimensione dell'applicazione piccola come l'applicazione Delphi 2009 (490 kb) senza composto; e a cosa serve rtti

È stato utile?

Soluzione

In breve (storia completa fornita dai link nella risposta di Splash):

{$ Rtti Metodi espliciti ([]) Properties ([]) Fields ([])}

Notare che A partire da XE6 e più recente, questo deve essere in ogni singola unità per la quale si desidera disabilitare RTTI. Prima di questo (XE5 e sotto) potrebbe essere nel file DPR e si applicherebbe a tutte le unità del progetto.

Altri suggerimenti

Il tuo problema non è correlato a RTTI. Se stai parlando di un aumento relativamente piccolo (100-200k), ciò è dovuto a funzioni extra in RTL (aggiunto per il supporto Unicode ecc.). Se ottieni un aumento di 500-700k o giù di lì, controlla se collega le unità UI VCL (moduli, controlli ecc.). Se ottieni un aumento di 3 MB, hai acceso simboli di debug extra.

È perché alcune funzionalità generiche sono state aggiunte alle unità SYS. I generici sono stati aggiunti nel 2009 ma nelle unità di sistemi alcune classi sono state riscritte con generici in XE e XE2. A parer mio

Aggiungi queste flag per ridurre le dimensioni Nel file DPR (Progetto> Visualizza sorgente) a ogni singola unità (come di 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([])}

(*) Notare che A partire da XE5 e più recenti, questo deve essere in ogni singola unità per la quale si desidera disabilitare RTTI. Prima di questo (XE4 e sotto) potrebbe essere nel file DPR e si applicherebbe a tutte le unità del progetto.

Non credo che sia RTTI ciò che aggiunge tanta dimensione sovraccarica alla tua applicazione. Come fai a sapere che è?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top