2009-08-21 8 views

risposta

14

Perché se si esegue una compilazione normale, il linker può eseguire "smart linking" sulle DCU e rimuovere il codice di cui il programma non ha mai bisogno. Ma i pacchetti sono precostruiti e contengono tutto il codice, quindi non è possibile collegarli in modo intelligente a dimensioni inferiori.

4

Penso che si presuma che tutti i file BPL siano collegati quando si genera un programma con BPL incorporato. Questo non è il caso. Nella fase finale della compilazione, il compilatore Delphi entra in collegamento tra tutto. Lì omette i moduli, che sono nella BPL ma non chiamati direttamente o indirettamente dal tuo programma.

Così, si finisce con un ingombro molto più piccolo, solo i moduli effettivamente necessari sono nell'exe finale.

+3

Non solo interi moduli. Lo smartlinker può ritagliare singole funzioni e procedure dall'interno di un'unità se determina che non vengono mai utilizzate. –