/DELAY (Laden von Importeinstellungen verzögern)
/DELAY:UNLOAD
/DELAY:NOBIND
Hinweise
Die Option /DELAY steuert das verzögerte Laden von DLLs:
Der UNLOAD-Qualifizierer weist die Hilfsfunktion für verzögertes Laden an, den expliziten Entladevorgang der DLL zu unterstützen. Die Importadressentabelle (IAT) wird auf die ursprüngliche Form zurückgesetzt, womit die Gültigkeit von IAT-Zeigern aufgehoben wird und diese überschrieben werden.
Wenn Sie UNLOAD nicht auswählen, schlägt jeder Aufruf von FUnloadDelayLoadedDLL fehl.
Der NOBIND-Qualifizierer weist den Linker an, keine bindungsfähige IAT in das endgültige Bild einzufügen. Standardmäßig wird eine bindungsfähige IAT für verzögert geladene DLLs erstellt. Das resultierende Bild kann nicht statisch gebunden werden. (Bilder mit bindungsfähigen IATs können vor der Ausführung statisch gebunden werden.) Siehe auch /BIND.
Wenn die DLL gebunden ist, versucht die Hilfsfunktion, die Bindungsinformation zu verwenden, anstatt für jeden referenzierten Import GetProcAddress aufzurufen. Wenn der Timestamp oder die bevorzugte Adresse nicht mit dem Timestamp bzw. Adresse der geladenen DLL übereinstimmt, nimmt die Hilfsfunktion an, dass die gebundene IAT veraltet ist, und setzt die Verarbeitung so fort, als ob die gebundene IAT nicht vorhanden wäre.
Mit NOBIND wird das Programmabbild zwar größer, die Ladezeit für DLLs wird jedoch verringert. Wenn die DLL nicht gebunden werden soll, wird mit NOBIND verhindert, dass die gebundene IAT generiert wird.
Um DLLs so einzurichten, dass das Laden verzögert wird, verwenden Sie die Option /DELAYLOAD.
So legen Sie diese Linkeroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Festlegen von Visual C++-Projekteigenschaften.
Klicken Sie auf den Ordner Linker.
Klicken Sie auf die Eigenschaftenseite Erweitert.
Ändern Sie die Eigenschaft Verzögertes Entladen.
So legen Sie diese Linkeroption programmgesteuert fest
- Siehe DelayLoadDLLs.