Sdílet prostřednictvím


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.

Viz také

Koncepty

Podpora linkeru pro knihovny DLL s odloženým načtením