LoadLibrary возвращает 126 при загрузке dll во время выполнения - PullRequest
0 голосов
/ 08 мая 2020

У меня есть файл MF C dll, который пытается загрузить другую dll во время выполнения с помощью функции LoadLibrary.
Приведенный ниже код отлично работает в консольном приложении с набором символов MBCS .
Однако тот же код, который я использовал в MF C dll, не работает.

GetLastError всегда пытается возвращать 126, что составляет Module NOT Found.
Моя MF C dll имеет набор символов MBCS .
Я даже пробовал помещаю dll в рабочий каталог, пытаясь получить к нему доступ, используя имя dll, но все равно не могу найти.
Я потратил часы на поиск решения, но не решил мою проблему.

Я попытался найти dll с помощью Dependency Walker , и он загрузился нормально.
Есть ли у кого-нибудь идея? Вот мой пример кода фрагмента:

HINSTANCE dllGetproc = LoadLibrary((LPCSTR)"C:\\Proj\\dev\\Soft\\Soft.FXX.dll");

if (!dllGetproc ) {
    Format(var,"Could not load the dynamic library error = %d", GetLastError());
    Log(var);
}
else {
    Log("Loaded successfully.");
}

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Я уже нашел причину root. Я забыл сказать, что подключаю dll к процессу приложения во время отладки.
Приложение требует, чтобы Soft.FXX.dll находился в одном каталоге с ним. Я действительно думал, что достаточно передать весь путь dll к функции LoadLibrary.

0 голосов
/ 08 мая 2020

Код ошибки сообщает вам, что модуль не найден. Либо:

  1. Библиотека, которую вы пытаетесь загрузить, не может быть найдена.
  2. Эта библиотека может быть найдена, но одна, если ее зависимости (обычно библиотека времени выполнения MSV C) не могут быть найденным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...