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


Функции 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.В этих операционных системах при загрузке файлов в первую очередь поиск идет в текущем каталоге.Если не указать полный путь к файлу, может быть загружен не тот файл, который требуется.

Возможные задачи

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

См. также

Ссылки

LoadLibrary

AfxLoadLibrary

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

библиотеки DLL