Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 194
1

Не загружается DLL библиотека

10.11.2024, 02:40. Показов 1550. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Итак, у меня есть код на C (который я взяла из викиучебника), который должен загружать DLL-библиотеку, написанную на другом языке программирования:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
typedef void (*importFunction)();
 
int main()
{
    importFunction EnterPoint;
    HMODULE hinstLib = LoadLibrary("Prometheum.dll");
    if (hinstLib == NULL){
        printf("ERROR!");
        return 1;
    }
    EnterPoint = (importFunction)GetProcAddress(hinstLib, "EnterPoint");
    EnterPoint;
    FreeLibrary(hinstLib);
    return 0;
}
Однако, когда я это запускаю, то у меня лишь высвечивается ERROR, то есть библиотека почему-то не загружается. В чем тут дело и как это пофиксить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2024, 02:40
Ответы с готовыми решениями:

Не загружается dll библиотека через функцию LoadLibrary
Добрый день! Пишу с вопросом по поводу загрузки dll файла, написал программу, которая должна их открывать (код ниже), создал свою...

Ошибка после создания нового .lib из .dll (библиотека bass.dll)
Скачал библиотеку bass.dll (.dll, .h, .lib) и при подключении либы через pragma comment компилятор ругался, что файл повреждён. Создал .def...

Не загружается DLL. Правила написания DLL
Добрый день! Вопрос в следующем. Есть код на Си++ с применением классов, раскиданных по нескольким исходникам. Код рабочий, gcc под с++11...

27
Модератор
Эксперт С++
 Аватар для zss
13734 / 10930 / 6483
Регистрация: 18.12.2011
Сообщений: 29,167
10.11.2024, 09:58 2
Цитата Сообщение от Артемида1996 Посмотреть сообщение
когда я это запускаю
Как Вы запускаете?
Если из среды компилятора, то Prometheum.dll должен
находиться в папке, где расположен файл проекта, а не рядом с экзешником.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12847 / 6714 / 1805
Регистрация: 18.10.2014
Сообщений: 17,013
10.11.2024, 10:31 3
Цитата Сообщение от zss Посмотреть сообщение
Если из среды компилятора, то Prometheum.dll должен
находиться в папке, где расположен файл проекта, а не рядом с экзешником.
Почему??

Во-первых, поиск файла библиотеки в LoadLibrary всегда начинается "рядом с экзешником".

Во-вторых, если вы ведете речь о текущей рабочей директории, то она определяется настройками проекта, а не просто "где расположен файл проекта".

Цитата Сообщение от Артемида1996 Посмотреть сообщение
Однако, когда я это запускаю, то у меня лишь высвечивается ERROR, то есть библиотека почему-то не загружается.
Так а она вообще существует, эта библиотека? Где она хранится?

Цитата Сообщение от Артемида1996 Посмотреть сообщение
EnterPoint;
Бессмысленная строчка кода. Сильно сомневаюсь, что вы правильно воспроизвели код из вашего "викиучебника".
1
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 194
10.11.2024, 19:35  [ТС] 4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Так а она вообще существует, эта библиотека?
Дурацкий вопрос. Конечно, существует.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Где она хранится?
Рядом с экзешником и хранится.

Добавлено через 2 минуты
Цитата Сообщение от zss Посмотреть сообщение
Как Вы запускаете?
Если из среды компилятора, то Prometheum.dll должен
находиться в папке, где расположен файл проекта, а не рядом с экзешником.
Вот сейчас только что кинула библиотеку как раз в папку файла проекта. Не помогает.
0
Злостный нарушитель
 Аватар для Verevkin
9771 / 5316 / 1210
Регистрация: 12.03.2015
Сообщений: 24,985
10.11.2024, 19:43 5
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Вот сейчас только что кинула библиотеку как раз в папку файла проекта. Не помогает.
Дай файл.
0
Модератор
Эксперт С++
 Аватар для zss
13734 / 10930 / 6483
Регистрация: 18.12.2011
Сообщений: 29,167
10.11.2024, 19:46 6
Попробуйте таким способом загрузить какой-нибудь стандартный dll,
скопировав его из папки c:\windows\system32 под другим именем
Если получится, то проблема в самом dll.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12847 / 6714 / 1805
Регистрация: 18.10.2014
Сообщений: 17,013
10.11.2024, 19:57 7
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Дурацкий вопрос. Конечно, существует.
В форуме "C для начинающих" нет дурацких вопросов.

А как насчет диагностических сообщений при компиляции? Не могло так получиться, что проект вы компилируете в режиме широких символов, а имя файла передаете узкими? В качестве эксперимента на эту тему: не поменяется ли что, если использовать именно LoadLibraryA?
0
Злостный нарушитель
 Аватар для Verevkin
9771 / 5316 / 1210
Регистрация: 12.03.2015
Сообщений: 24,985
10.11.2024, 19:59 8
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Вот сейчас только что кинула библиотеку как раз в папку файла проекта. Не помогает.
Дай файл сюда, говорю! Пока выходной не кончился.
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 194
11.11.2024, 20:34  [ТС] 9
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Бессмысленная строчка кода.
Это не бессмысленная строчка кода, а имя импортируемой функции.
Цитата Сообщение от zss Посмотреть сообщение
Попробуйте таким способом загрузить какой-нибудь стандартный dll,
скопировав его из папки c:\windows\system32 под другим именем
Если получится, то проблема в самом dll.
Однозначно, нет. Когда я его запускаю другими средствами, все нормально работает. Он не запускается именно в C.
0
Злостный нарушитель
 Аватар для Verevkin
9771 / 5316 / 1210
Регистрация: 12.03.2015
Сообщений: 24,985
11.11.2024, 20:40 10
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Однозначно, нет. Когда я его запускаю другими средствами, все нормально работает. Он не запускается именно в C.
Ну так ты нам дашь посмотреть на эту секретную DLL или я пошёл чай пить?
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 194
11.11.2024, 20:51  [ТС] 11
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
А как насчет диагностических сообщений при компиляции? Не могло так получиться, что проект вы компилируете в режиме широких символов, а имя файла передаете узкими?
Что вы имеете в виду?
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 194
11.11.2024, 20:52  [ТС] 12
Цитата Сообщение от Verevkin Посмотреть сообщение
Ну так ты нам дашь посмотреть на эту секретную DLL или я пошёл чай пить?
Оки-доки, вот оно:
Вложения
Тип файла: zip Prometheum.zip (1.31 Мб, 4 просмотров)
0
Злостный нарушитель
 Аватар для Verevkin
9771 / 5316 / 1210
Регистрация: 12.03.2015
Сообщений: 24,985
11.11.2024, 21:38 13
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Оки-доки, вот оно:
Вот такой результат должен быть?

Не загружается DLL библиотека
0
Модератор
Эксперт С++
 Аватар для zss
13734 / 10930 / 6483
Регистрация: 18.12.2011
Сообщений: 29,167
11.11.2024, 21:42 14
Артемида1996, Ваш dll 32-х битный.
Поэтому, он правильно грузится только, если cоздаёте Win32 проект.
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 194
11.11.2024, 21:49  [ТС] 15
Цитата Сообщение от Verevkin Посмотреть сообщение
Вот такой результат должен быть?
Совершенно верно.
0
Злостный нарушитель
 Аватар для Verevkin
9771 / 5316 / 1210
Регистрация: 12.03.2015
Сообщений: 24,985
11.11.2024, 21:49 16
Цитата Сообщение от zss Посмотреть сообщение
Поэтому, он правильно грузится только, если cоздаёте Win32 проект.
Это было очевидно.
Гораздо интереснее другое: DLL содержит какого-то трояна. При запуске приложения оно сразу попёрлось в сеть по https (443 порт) по адресу 195.216.243.243, собака сутулая! Мой файрвол, ясен хрен, жахнул это безобразие, но, как грится, осадочек остался.

Авторка, это шо за перфоманс такой, а?
0
Злостный нарушитель
 Аватар для Verevkin
9771 / 5316 / 1210
Регистрация: 12.03.2015
Сообщений: 24,985
11.11.2024, 21:51 17
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Совершенно верно.
Компили сишный код 32-битным компилятором или пересобери свою delphi-DLL 64-битным. Тогда заработает.
У меня всё.
Вложения
Тип файла: 7z thread3184931.7z (1.32 Мб, 2 просмотров)
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 194
11.11.2024, 21:54  [ТС] 18
Цитата Сообщение от zss Посмотреть сообщение
Поэтому, он правильно грузится только, если cоздаёте Win32 проект.
Я сделала Win64-библиотеку. Теперь она загружается, но вызов функции почему-то не срабатывает.

Добавлено через 41 секунду
Цитата Сообщение от Verevkin Посмотреть сообщение
Компили сишный код 32-битным компилятором или пересобери свою delphi-DLL 64-битным. Тогда заработает.
У меня всё.
Я пересобрала, но не работает вызов функции.
0
Злостный нарушитель
 Аватар для Verevkin
9771 / 5316 / 1210
Регистрация: 12.03.2015
Сообщений: 24,985
11.11.2024, 21:55 19
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Я сделала Win64-библиотеку.
А чо ж прислала 32-битную? Шоб я страдал в поисках 32-битного компилятора?
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 194
11.11.2024, 21:55  [ТС] 20
Цитата Сообщение от Verevkin Посмотреть сообщение
Гораздо интереснее другое: DLL содержит какого-то трояна.
Не все что пытается лезть в сеть - троян.

Добавлено через 31 секунду
Цитата Сообщение от Verevkin Посмотреть сообщение
А чо ж прислала 32-битную?
Только что пересобрала.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2024, 21:55
Помогаю со студенческими работами здесь

Дважды загружается динамическая библиотека
Здравствуйте, товарищи!!! Столкнулся с такой проблемой: пишу прогу, которая использует DLL-ку, причем DLL один раз грузится в начале...

библиотека dll
Peализoвать функцию (в завиcимocти oт варианта) библиoтeки kеrnеl32.dll. трeбoваниe: библиoтeка c прилoжeниeм cвязываeтcя динамичнo. ...

Библиотека (dll)
Доброго времени суток!!! Помогите, пожалуйста, у меня есть программа я не могу в ней разобраться, а именно подключить библиотеку .dll... ...

Не работает dll библиотека
Здрасьте, форум, помогите не работает dll библиотека. Была сделана по пошаговому руководству с msdn:...

Библиотека gdiplus.dll
Доброго времени суток! Нужна документация или хоть какое нибуть описание библиотеки gdiplus.dll. Очень желательно на русском. Может кто...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Winforstrap или красявый дизайн своими руками на HTML+JS+Winform­s
anomal6 04.03.2025
Сидел тут вечером ковырял проект на MAUI, и как же глупо создаются пакеты MSIX и система обновлений пакета публикации, но не об этом. Бывает нужен современный дизайн программы а писать на MAUI,. . .
Формат данных для симуляции физики, посредством распространённы­­­­­­­х не обученных моделей.
Hrethgir 04.03.2025
Что-то как-то снова потерялось, зато катангенсы закатангесились в одном сообщении. На днях писал, что планирую для работы апгрейдить (на этот раз удачно) девайс для работы (конкретно - здоровья для,. . .
Концепция variadic
CoderHuligan 04.03.2025
Мне не очень нравится (а кому это нравится?) что у нас есть отдельно компилятор, отдельно линковщик, причем со своим собственным командным языком. При этом усложнении надо знать помимо языка. . .
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class — два мощных инструмента для обуздания неизменяемых структур данных, каждый со своим уникальным подходом к решению этой задачи. История их появления весьма. . .
Создание производительны­­­х API с Java и gRPC
Wired 04.03.2025
В мире микросервисной разработки вопрос производительности часто становится краеугольным камнем. И хотя REST API давно завоевал сердца разработчиков своей простотой и интуитивностью, при высоких. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 — это настоящий прорыв в эволюции Java, который кардинально меняет правила игры. В этом релизе разработчики Oracle наконец-то довели до ума множество критически важных улучшений в. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Погружаясь в мир блокчейн-разработки на Java, разработчик получает доступ к внушительному арсеналу инструментов. В отличие от Solidity, который "заперт" в экосистеме Ethereum, Java предоставляет. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru