Fondamentalmente ciò che si sta facendo è impostare la DLL in questione in modo che si trovi nella sezione di caricamento del ritardo. Quindi non caricherà quella DLL finché non si effettua una chiamata a una funzione che si trova in quella DLL.
Visual C++ linker ora supporta il caricamento ritardato di DLL. Questo allevia la necessità di utilizzare le funzioni di Windows SDK LoadLibrary e GetProcAddress per implementare il caricamento ritardato della DLL.
Prima di Visual C++ 6.0, l'unico modo per caricare una DLL in fase di esecuzione era di utilizzando LoadLibrary e GetProcAddress; il sistema operativo caricava la DLL quando veniva caricato l'eseguibile o la DLL che lo utilizzava.
A partire da Visual C++ 6.0, quando il collegamento staticamente a una DLL, il linker fornisce opzioni per ritardare caricare la DLL finché il programma chiama una funzione in quella DLL.
Un'applicazione può ritardare il caricamento di una DLL utilizzando l'opzione di collegamento /DELAYLOAD (Delay Load Import) con una funzione di supporto (implementazione predefinita fornita da Visual C++). La funzione di supporto caricherà la DLL durante l'esecuzione del tempo chiamando LoadLibrary e GetProcAddress.
Si dovrebbe considerare ritardo caricamento di una DLL se:
Il vostro programma non può chiamare una funzione nella DLL.
Una funzione nella DLL potrebbe non essere richiamata fino a quando non è in esecuzione l'esecuzione del programma.
Il caricamento ritardato di una DLL può essere specificato durante la creazione di un progetto .EXE o .DLL. Un progetto .DLL che ritarda il caricamento di di una o più DLL non deve chiamare esso stesso un punto di ingresso con ritardo di caricamento in Dllmain.
Stai chiedendo come funziona il caricamento ritardato o come puoi applicarlo? – xtofl