-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
1

Ошибка при динамической загрузке DLL

01.06.2021, 23:41. Показов 1423. Ответов 7

Author24 — интернет-сервис помощи студентам
Разбираюсь с созданием DLL в Visual Studio 2019.
Сейчас возникает ошибка на этапе подключения созданной DLL к консольному приложению.
Ошибка в том, что функция LoadLibrary() возвращает нулевой дескриптор.


C++
1
2
3
4
        HINSTANCE mathLib;
    char dllName[80] = "MathLibrary.dll";
 
        mathLib = LoadLibraryA(dllName);     // mathLib = NULL

MathLibrary.dll я поместил и в папку с исходными файлами проекта, и в папку с создаваемым ехе файлом.
Может есть какая-то неучтенная хитрость?
Напишите, что нужно обязательно включить в проекте, чтобы LoadLibrary() вернула ненулевой дескриптор.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2021, 23:41
Ответы с готовыми решениями:

Ошибка при динамической привязке dll библиотеки Access violation at address 00000000. Read of address 00000000
Добрый день В моем коде я динамически привязал библиотеку dll к приложению. При нажатии кнопки...

Зависает форма при загрузке DLL
Я написал функцию и поместил ее в DLL.Если загружать эту DLL из программы которая открыта в билдере...

При загрузке Dll MessageBox срабатывает 2 раза
создаю такую тестевую dll #include <windows.h> BOOL WINAPI DllMain (HANDLE hInst,DWORD...

Ошибка при загрузке DLL
Unable to load DLL 'sqlite3': Не найден указанный модуль. (Exception from HRESULT: 0x8007007E) По...

7
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
02.06.2021, 01:06 2
а просто файл с этой строчкой открывается через fopen/ifstream ?
0
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
02.06.2021, 10:01  [ТС] 3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а просто файл с этой строчкой открывается через fopen/ifstream ?
Спасибо за наводку.
Если через fstream, то MathLibrary.dll открывается только тогда, когда указан полный путь к файлу.

C++
1
2
3
std::string File_name_Dll = "d:\\work\\Projects\\Test\\Unical\\Debug\\MathLibrary.dll"; // полный путь
std::ifstream DllFileID;
DllFileID.open(File_name_Dll, std::ios::binary); // открывается
0
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
02.06.2021, 10:07 4
prokino, значит вы просто не в тот каталог положили. Посмотрите в настройках проекта какой каталог считается рабочим при запуске из VS. Туда и кладите DLL.

Добавлено через 2 минуты
Также стоит добавить обработку ошибок. Через GetLastError можно узнать что именно случилось, из-за чего вернулся NULL

Добавлено через 1 минуту
DLL для загрузки должна быть той же разрядности, что и ваш проект.
0
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
02.06.2021, 10:12  [ТС] 5
Но LoadLibrary() по прежнему не читает dll файл


C++
1
mathLib = LoadLibraryA("d:\\work\\Projects\\Test\\Unical\\Debug\\MathLibrary.dll");     // Чтение памяти невозможно
0
Вездепух
Эксперт CЭксперт С++
11688 / 6367 / 1723
Регистрация: 18.10.2014
Сообщений: 16,050
02.06.2021, 10:18 6
Цитата Сообщение от prokino Посмотреть сообщение
Но LoadLibrary() по прежнему не читает dll файл
И что вам сказало GetLastError()?
0
Заблокирован
02.06.2021, 10:29 7
Цитата Сообщение от prokino Посмотреть сообщение
Но LoadLibrary() по прежнему не читает dll файл
дай DLL
0
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
02.06.2021, 13:50  [ТС] 8
DrOffset был прав: причина была в том, что в новом проекте, из которого вызывалась созданная DLL, использовался штатный компилятор Visual Studio. После того, как я указал в настройках проекта путь к компилятору, который создал DLL, функция LoadLibrary() резко заработала.

Отдельное спасибо за GetLastError() - реально классная вещь.

Чуваки, я прям чувствую, как мозги ума набираются.
0
02.06.2021, 13:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2021, 13:50
Помогаю со студенческими работами здесь

Собрал компьютер, вылетает ошибка: ошибка при загрузке AMBspi.dll ,не находит указаный модуль
Собрал комп для игр. Материнка Crosshair 4 formula, графика ASUS HD 6870; процесор AMD X4 965, 3,4...

Ошибка при загрузке ldr.dll
Здравствуйте! Есть такая проблема: при входе на некоторые сайты (например, ВКонтакте) компьютер...

Ошибка при загрузке ldr.dll
День Добрый! Кажись, все сделала согласно рекомендациям по этой теме. Вопрос: как исправить эту...

Ошибка hal.dll при загрузке
При выборе любого пункта компьютер выключается. Что с ним случилось, и как его оживить?

Ошибка при загрузке - не найден модуль Nleren1.dll
При загрузке системы выводится сообщение, что не найден модуль Nleren1.dll. Возможно данный файл...

При загрузке Windows появляется ошибка NvCpl.dll
Помогите как можно это устранить Добавлено через 3 минуты Пишится так Ошибка при загрузке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru