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


Функции LoadLibrary и AfxLoadLibrary

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

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

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

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

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

Внимание

Обязательно укажите полный путь к любым библиотекам DLL. Текущий каталог может быть просмотрен первым при загрузке файлов с LoadLibrary. Если вы указываете неполный путь к файлу, может быть загружен неправильный файл. При создании библиотеки DLL используйте параметр компоновщика /DEPENDENTLOADFLAG, чтобы указать порядок поиска для статически связываемых зависимостей DLL. В библиотеках DLL используйте оба полных пути для явно загруженных зависимостей и параметры вызовов LoadLibraryEx или AfxLoadLibraryEx, чтобы указать порядок поиска модулей. Дополнительные сведения см. в разделах Безопасность библиотеки динамической компоновки (DLL) и Порядок поиска библиотеки динамической компоновки (DLL).

Что вы хотите сделать?

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

См. также