Udostępnij za pośrednictwem


LoadLibrary i AfxLoadLibrary

Procesy wywołuje metodę LoadLibrary lub LoadLibraryEx , aby jawnie połączyć się z biblioteką DLL. (Korzystanie z aplikacji MFCAfxLoadLibrary lub AfxLoadLibraryEx. Jeśli funkcja powiedzie się, mapuje określoną bibliotekę DLL na przestrzeń adresową procesu wywołującego i zwraca uchwyt do biblioteki DLL. Dojście jest wymagane w innych funkcjach używanych do łączenia jawnego — na przykład GetProcAddress i FreeLibrary. Aby uzyskać więcej informacji, zobacz Jawne łączenie.

LoadLibrary próbuje zlokalizować bibliotekę DLL przy użyciu tej samej sekwencji wyszukiwania, która jest używana do łączenia niejawnego. LoadLibraryEx zapewnia większą kontrolę nad kolejnością ścieżki wyszukiwania. Aby uzyskać więcej informacji, zobacz Dynamic Link Library Search Order (Kolejność wyszukiwania biblioteki linków dynamicznych). Jeśli system nie może znaleźć biblioteki DLL lub jeśli funkcja punktu wejścia zwraca wartość FALSE, LoadLibrary zwraca wartość NULL. Jeśli wywołanie LoadLibrary do określa moduł DLL, który jest już mapowany do przestrzeni adresowej procesu wywołującego, funkcja zwraca uchwyt biblioteki DLL i zwiększa liczbę odwołań modułu.

Jeśli biblioteka DLL ma funkcję punktu wejścia, system operacyjny wywołuje funkcję w kontekście wątku o nazwie LoadLibrary lub LoadLibraryEx. Funkcja punktu wejścia nie jest wywoływana, jeśli biblioteka DLL jest już dołączona do procesu. Dzieje się tak, gdy poprzednie wywołanie do LoadLibrary lub LoadLibraryEx dla biblioteki DLL nie miało odpowiedniego FreeLibrary wywołania funkcji.

W przypadku aplikacji MFC, które ładują biblioteki DLL rozszerzeń MFC, zalecamy użycie AfxLoadLibrary biblioteki lub AfxLoadLibraryEx zamiast LoadLibrary lub LoadLibraryEx. Funkcje MFC obsługują synchronizację wątków przed jawnym załadowaniem biblioteki DLL. Interfejsy (prototypy funkcji) do AfxLoadLibrary i AfxLoadLibraryEx są takie same jak LoadLibrary i LoadLibraryEx.

Jeśli system Windows nie może załadować biblioteki DLL, proces może podjąć próbę odzyskania po błędzie. Może na przykład powiadomić użytkownika o błędzie, a następnie poprosić o inną ścieżkę do biblioteki DLL.

Ważne

Upewnij się, że określono pełną ścieżkę dowolnych bibliotek DLL. Bieżący katalog może być wyszukiwany jako pierwszy, gdy pliki są ładowane przez LoadLibraryprogram . Jeśli nie kwalifikujesz się w pełni do ścieżki pliku, może zostać załadowany plik inny niż zamierzony. Podczas tworzenia biblioteki DLL użyj opcji konsolidatora /DEPENDLOADFLAG , aby określić kolejność wyszukiwania statycznie połączonych zależności dll. W bibliotekach DLL użyj obu pełnych ścieżek, aby jawnie załadować zależności, oraz LoadLibraryEx AfxLoadLibraryEx parametry wywołania w celu określenia kolejności wyszukiwania modułu. Aby uzyskać więcej informacji, zobacz Dynamic-Link Library Security and Dynamic Link Library Search Order (Zabezpieczenia biblioteki dynamicznej i dynamiczna kolejność wyszukiwania biblioteki linków dynamicznych).

Co chcesz zrobić?

Co chcesz dowiedzieć się więcej?

Zobacz też