2009-08-21 9 views

Respuesta

14

Porque si ejecuta una compilación normal, el enlazador puede hacer "enlaces inteligentes" en las DCU y eliminar el código que su programa nunca necesita. Pero los paquetes están preconstruidos y tienen todo el código incluido, por lo que no puede vincularlos de manera inteligente a un tamaño más pequeño.

4

Creo que asume que todos los archivos BPL están vinculados cuando genera un programa con BPL incorporados. Ese no es el caso. En la etapa final de compilación, el compilador de Delphi va a vincular todo junto. Allí omite los módulos, que están en el BPL pero que su programa no llama directa o indirectamente.

Por lo tanto, terminas con una huella mucho más pequeña, solo los módulos realmente necesarios están en el exe final.

+3

No solo módulos completos. El smartlinker puede cortar funciones y procedimientos individuales desde dentro de una unidad si determina que nunca se utilizan. –