Question

J'ai utilisé Delphi Xe récemment mais la taille EXE est très grande à cause de RTTI (je pense)

How to supprimer rtti, et puis-je rendre ma taille d'application aussi petite que l'application Delphi 2009 (490 Ko) sans comptssion; Et quelle est l'utilisation de RTTI

Était-ce utile?

La solution

En bref (histoire complète fournie par des liens dans la réponse de Splash):

{$ Rtti Méthodes explicites ([]) Propriétés ([]) champs ([])}

Notez que À partir de XE6 et plus récente, cela doit être dans chaque unité individuelle pour laquelle vous souhaitez désactiver RTTI. Avant cela (XE5 et ci-dessous), il pourrait être dans le fichier DPR et s'appliquerait à toutes les unités du projet.

Autres conseils

Votre problème n'est pas lié à RTTI. Si vous parlez d'une augmentation relativement faible (100-200k), cela est dû à des fonctions supplémentaires dans RTL (ajoutée pour le support Unicode, etc.). Si vous obtenez une augmentation de 500 à 700k environ, vérifiez si vous liez les unités d'interface utilisateur VCL (formulaires, contrôles, etc.). Si vous obtenez une augmentation de 3 Mo, vous avez allumé des symboles de débogage supplémentaires.

C'est parce que certaines fonctionnalités génériques ont été ajoutées aux unités SYS. Des génériques ont été ajoutés en 2009, mais dans les unités de systèmes, certaines classes ont été réécrites avec des génériques dans XE et XE2. A mon humble avis

Ajoutez ces drapeaux pour réduire la taille Dans le fichier DPR (projet> Voir la source) à chaque unité individuelle (à partir de 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([])}

(*) Notez que À partir de XE5 et plus récents, cela doit être dans chaque unité individuelle pour laquelle vous souhaitez désactiver RTTI. Avant cela (XE4 et ci-dessous), il pourrait être dans le fichier DPR et s'appliquerait à toutes les unités du projet.

Je ne pense pas que ce soit RTTI ce qui ajoute autant de frais généraux à votre application. Comment savez-vous que c'est?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top