Sdílet prostřednictvím


LoadLibrary a AfxLoadLibrary

Procesy volání LoadLibrary nebo LoadLibraryEx explicitně propojit s knihovnou DLL. (aplikace MFC používají AfxLoadLibrary nebo AfxLoadLibraryEx.) Pokud je funkce úspěšná, namapuje zadanou knihovnu DLL do adresního prostoru volajícího procesu a vrátí popisovač knihovny DLL. Popisovač se vyžaduje v jiných funkcích používaných pro explicitní propojení, GetProcAddress například a FreeLibrary. Další informace naleznete v tématu Explicitní propojení.

LoadLibrary pokusí najít knihovnu DLL pomocí stejné sekvence hledání, která se používá pro implicitní propojení. LoadLibraryEx poskytuje větší kontrolu nad pořadím cesty hledání. Další informace najdete v tématu Pořadí hledání v knihovně dynamického propojení. Pokud systém nemůže najít knihovnu DLL nebo pokud funkce vstupního bodu vrátí hodnotu FALSE, LoadLibrary vrátí hodnotu NULL. Pokud volání LoadLibrary určuje modul DLL, který je již namapován do adresního prostoru volajícího procesu, vrátí funkce popisovač knihovny DLL a zvýší počet odkazů modulu.

Pokud má knihovna DLL funkci vstupního bodu, operační systém volá funkci v kontextu vlákna, které volal LoadLibrary nebo LoadLibraryEx. Funkce vstupního bodu není volána, pokud je knihovna DLL již připojena k procesu. K tomu dochází v případě, že předchozí volání LoadLibrary nebo LoadLibraryEx pro knihovnu DLL nemá odpovídající volání FreeLibrary funkce.

Pro aplikace MFC, které načítají rozšiřující knihovny DLL MFC, doporučujeme použít AfxLoadLibrary nebo AfxLoadLibraryEx místo LoadLibrary nebo LoadLibraryEx. Funkce MFC zpracovávají synchronizaci vláken před explicitně načtením knihovny DLL. Rozhraní (prototypy funkcí) a AfxLoadLibrary AfxLoadLibraryEx jsou stejná jako LoadLibrary a LoadLibraryEx.

Pokud systém Windows nemůže načíst knihovnu DLL, může se váš proces pokusit o obnovení z chyby. Může například upozornit uživatele na chybu a pak požádat o jinou cestu ke knihovně DLL.

Důležité

Nezapomeňte zadat úplnou cestu všech knihoven DLL. Aktuální adresář může být prohledána jako první při načtení LoadLibrarysouborů . Pokud cestu k souboru plně nekvalifikujete, může být načten jiný soubor, než je zamýšlený soubor. Při vytváření knihovny DLL použijte možnost linkeru /DEPENDENTLOADFLAG k určení pořadí hledání pro staticky propojené závislosti knihovny DLL. V rámci knihoven DLL použijte obě úplné cesty k explicitně načtené závislosti a LoadLibraryEx nebo AfxLoadLibraryEx parametry volání k určení pořadí hledání modulu. Další informace najdete v tématu Zabezpečení knihovny Dynamic-Link a Pořadí hledání dynamické knihovny odkazů.

Co chcete udělat?

O čem chcete vědět víc?

Viz také