Delphi xe desactivar rtti
-
09-10-2019 - |
Pregunta
He usado Delphi Xe recientemente, pero el tamaño exe es muy grande debido a RTTI (creo)
Cómo eliminar RTTI, y puedo hacer que el tamaño de mi aplicación sea tan pequeño como la aplicación Delphi 2009 (490 kb) sin comprssion; ¿Y de qué es el uso de RTTI?
Solución
En resumen (historia completa proporcionada por enlaces en la respuesta de Splash):
{$ RTTI Métodos explícitos ([]) Propiedades ([]) Fields ([])}
Tenga en cuenta que A partir de XE6 y más nuevo, esto debe estar en cada unidad individual para la cual desea deshabilitar RTTI. Antes de eso (XE5 y abajo) podría estar en el archivo DPR y se aplicaría a todas las unidades en el proyecto.
Otros consejos
Leer el Ayuda en línea para Delphi ...
... y búsqueda Desbordamiento de pila:
Tenga en cuenta que el $RTTI
La directiva debe incluirse en cada Unidad donde debe entrar en vigencia. Ver ¿Cómo puedo establecer la directiva $ RTTI para todo el proyecto?
Su problema no está relacionado con RTTI. Si está hablando de un aumento relativamente pequeño (100-200k), esto se debe a funciones adicionales en RTL (agregado para soporte de Unicode, etc.). Si obtiene un aumento de 500-700k más o menos, verifique si vincula las unidades de UI VCL (formularios, controles, etc.). Si obtiene un aumento de 3 MB, entonces ha activado símbolos de depuración adicionales.
Es porque se ha agregado alguna funcionalidad genérica a las unidades SYS. Se agregaron genéricos en 2009, pero en las unidades de sistemas, algunas clases se reescribieron con genéricos en XE y XE2. En mi humilde opinión
Agregue estas banderas para reducir el tamaño En el archivo DPR (Proyecto> Vista de vista) a cada unidad individual (a 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([])}
(*) Tenga en cuenta que A partir de XE5 y más nuevo, esto debe estar en cada unidad individual para la cual desea deshabilitar RTTI. Antes de eso (XE4 y abajo) podría estar en el archivo DPR y se aplicaría a todas las unidades en el proyecto.
No creo que sea RTTI lo que agrega tanto tamaño por encima de su aplicación. ¿Cómo sabes que es?