Поделиться через


Функции LoadLibrary и AfxLoadLibrary

Обновлен: Ноябрь 2007

Процессы вызывают функцию LoadLibrary (или функцию AfxLoadLibrary) для явного связывания с библиотекой DLL. Если вызов завершается успехом, функция сопоставляет указанную библиотеку DLL с адресным пространством вызывающего процесса и возвращает дескриптор библиотеки DLL, который можно использовать с другими функциями для явного связывания, например GetProcAddressи FreeLibrary.

LoadLibrary пытается обнаружить библиотеку DLL с помощью того же метода поиска, который используется для неявного связывания. Если система не может найти библиотеку DLL или функция точки входа возвращает значение FALSE, функция LoadLibrary возвращает значение NULL. Если в вызове функции LoadLibrary указан модуль DLL, уже сопоставленный с адресным пространством вызывающего процесса, функция просто возвращает дескриптор библиотеки DLL и увеличивает счетчик ссылок модуля.

Если у библиотеки DLL есть функция точки входа, операционная система вызывает эту функцию в контексте потока, в котором вызвана функция LoadLibrary. Функция точки входа не вызывается, если библиотека DLL уже присоединена к процессу в результате предыдущего вызова функции LoadLibrary, за которым не последовал вызов функции FreeLibrary.

Приложения MFC, загружающие DLL-библиотеки расширения, должны использовать функцию AfxLoadLibrary вместо LoadLibrary. Функция AfxLoadLibrary обрабатывает синхронизацию потоков перед вызовом LoadLibrary. Интерфейс (прототип) функции AfxLoadLibrary такой же, как у функции LoadLibrary.

Если по какой-то причине системе Windows не удается загрузить библиотеку DLL, процесс может попытаться исправить ошибку. Например, процесс может уведомить пользователя об ошибке и запросить у него другой путь к библиотеке DLL.

zzk20sxw.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Если код запускается под управлением операционных систем Windows NT 4, Windows 2000 или Windows XP (предшествующих пакету обновления SP1), необходимо указывать полный путь для всех библиотек DLL. В этих операционных системах при загрузке файлов в первую очередь поиск идет в текущем каталоге. Если не указать полный путь к файлу, возможно загрузка другого файла.

Задачи, которые необходимо выполнить

Дополнительные сведения

См. также

Основные понятия

Библиотеки DLL