Supporto per le DLL a caricamento ritardato nel linker
Il linker di Visual C++ supporta il caricamento ritardato delle DLLrendendo pertanto inutile l'utilizzo delle funzioni LoadLibrary e GetProcAddress di Windows SDK.
Prima del rilascio di Visual C++ 6.0, l'unico metodo per caricare una DLL in fase di esecuzione consisteva nell'utilizzo di LoadLibrary e GetProcAddress. Nel sistema operativo la DLL veniva caricata al momento del caricamento dell'eseguibile o della DLL attiva.
A partire da Visual C++ 6.0, in caso di collegamento statico a una DLL il linker fornisce opzioni che consentono di ritardare il caricamento della DLL fino al momento della chiamata di una funzione in essa contenuta.
Un'applicazione consente di eseguire il caricamento ritardato di una DLL utilizzando l'opzione del linker /DELAYLOAD (Delay Load Import) con una funzione di supporto (implementazione predefinita fornita da Visual C++).La DLL verrà caricata dalla funzione di supporto in fase di esecuzione mediante una chiamata a LoadLibrary e GetProcAddress.
È consigliabile prendere in considerazione il caricamento ritardato della DLL quando:
Non è possibile chiamare una funzione nella DLL.
Una funzione contenuta nella DLL può essere chiamata solo in una fase successiva dell'esecuzione del programma.
Il caricamento ritardato di una DLL può essere specificato durante la compilazione di un progetto EXE o DLL.È tuttavia consigliabile che i progetti DLL con caricamento ritardato di una o più DLL non chiamino a loro volta un punto di ingresso a caricamento ritardato in Dllmain.
Nei seguenti argomenti viene descritto il caricamento ritardato delle DLL: