LoadLibraryEx не может найти DLL или ее зависимостиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 LoadLibraryEx не может найти DLL или ее зависимости

Сообщение Anonymous »


В настоящее время я пишу программу, которая загружает DLL (a.dll), которая использует другую DLL (b.dll).

При использовании функции LoadLibrary загрузка a.dll завершается успешно; при условии, что b.dll находится в том же каталоге, что и исполняемый файл (независимо от того, где находится a.dll). Однако для моих целей b.dll не может находиться в том же каталоге, что и исполняемый файл. Поэтому я прибегнул к LoadLibraryEx, у которого есть параметр flags, позволяющий задать более конкретные параметры загрузки DLL. Однако никто из них, похоже, ничего не делает. Что бы я ни делал последние несколько часов, все вызовы LoadLibraryEx завершаются неудачей и возвращают код ошибки 126.
HANDLE дескриптор; // это работает, если b.dll находится там же // каталог как исполняемый файл handle = LoadLibrary("a.dll"); FreeLibrary (дескриптор); // это тоже работает, поскольку использование значения // ноль для флагов заставляет его вести себя хорошо // то же, что и LoadLibrary handle = LoadLibraryEx("a.dll", NULL, 0); FreeLibrary (дескриптор); // это не работает, даже если есть b.dll // в том же каталоге, что и исполняемый файл // файл handle = LoadLibraryEx("a.dll", NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR); // это не работает, даже если есть b.dll // в том же каталоге, что и .dll handle = LoadLibraryEx("a.dll", NULL, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR); // это не работает, даже если есть b.dll // в одном из каталогов, указанных // успешный вызов AddDllDirectory Файл cookie DLL_DIRECTORY_COOKIE = AddDllDirectory(L"C:\\Fully\\Qualified\\Path"); handle = LoadLibraryEx("a.dll", NULL, LOAD_LIBRARY_SEARCH_USER_DIRS); RemoveDllDirectory(cookie);
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»