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?

¿Fue útil?

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

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top