Explicitní uvolnění knihovny DLL načtené se zpožděním
/Delay: propojovacího unload umožňuje uvolnit DLL knihovna, která byla načtena zpoždění.Ve výchozím nastavení při kód pro uvolnění knihovny DLL (pomocí /delay:unload a __FUnloadDelayLoadedDLL2), dovoz načtení zpoždění zůstávají v tabulku importních adres (IAT).Však používáte-li na příkazovém řádku propojovacího programu /delay:unload, podpůrná funkce bude podporovat explicitní uvolnění DLL, tabulku IAT obnovit do původní podoby; Neplatný ukazatele budou přepsány.Tabulku IAT je pole v ImgDelayDescr , která obsahuje adresu kopii původní IAT (pokud existuje).
Příklad
Kód
// link with /link /DELAYLOAD:MyDLL.dll /DELAY:UNLOAD
#include <windows.h>
#include <delayimp.h>
#include "MyDll.h"
#include <stdio.h>
#pragma comment(lib, "delayimp")
#pragma comment(lib, "MyDll")
int main()
{
BOOL TestReturn;
// MyDLL.DLL will load at this point
fnMyDll();
//MyDLL.dll will unload at this point
TestReturn = __FUnloadDelayLoadedDLL2("MyDll.dll");
if (TestReturn)
printf_s("\nDLL was unloaded");
else
printf_s("\nDLL was not unloaded");
}
Komentáře
Důležité poznámky o vykládce zpoždění načíst knihovnu DLL:
Provádění najdete __FUnloadDelayLoadedDLL2 funkce v souboru \VC7\INCLUDE\DELAYHLP.CPP.
Název parametru __FUnloadDelayLoadedDLL2 funkce musí přesně odpovídat (včetně případu) knihovny importu obsah (který je také řetězec import tabulky v obraze).Můžete zobrazit obsah knihovny import s DUMPBIN DEPENDENTS.Pokud je potřeba rozlišovat velká a malá písmena řetězec, můžete aktualizovat __FUnloadDelayLoadedDLL2 použití funkce řetězců CRT nebo volání rozhraní API systému Windows.
Viz uvolnění Delay-Loaded DLL Další informace.