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


Функции LoadLibrary и AfxLoadLibrary

Процессы вызывают функцию 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.

Примечание о безопасностиПримечание по безопасности

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

Выберите действие.

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

См. также

Ссылки

AfxLoadLibrary

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

DLL в Visual C++

Другие ресурсы

LoadLibrary