Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 13

Явная загрузка .dll

26.10.2014, 22:02. Показов 2459. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поблема: библиотеку подключил, но внутри никак не найду функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
HMODULE hLibrary = 0;
    hLibrary = LoadLibrary("MyDll.dll");
    
    void (*pFunction)(int *, int, int);
    (FARPROC &)pFunction = GetProcAddress(hLibrary, "sort");
    
    if (pFunction == NULL)
        {
            MessageBox(NULL, "Функция sort не найдена",
            "LoadLibrary", MB_OK | MB_ICONQUESTION);
        }
    int n_equantity, n_tquantity, *nmass;
    cout<<"enter quantity of elements : \t";
    cin>>n_equantity; 
    cout<<endl<<"enter quantity of threads : \t";
    cin>>n_tquantity;
    cout<<endl;
    nmass = new int[n_equantity];
    for(int i = 0; i < n_equantity; i++)
        nmass[i] = rand()%50;
    out(nmass, n_equantity);   
    pFunction(nmass, n_equantity, n_tquantity);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2014, 22:02
Ответы с готовыми решениями:

Явная загрузка DLL
Доброго дня всем! Мне надо сделать явную подгрузку dll в проекте и использовать с нее некую функцию (например FormMatrix() ). Эта...

Динамическая загрузка dll
Программа использует функции из нескольких dll. Запуск программы в течение дня происходит многократно. С целью ускорения запуска программы...

Динамическая загрузка DLL
Здравствуйте, У меня возникла проблема с динамической загрузкой библиотеки. Есть один файл - ****.dll , который нужно подключить к...

9
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
26.10.2014, 22:28
При экпорте функций из dll из имена могут некоторым образом искажаться.
Например, вместо MyFunc получится что-нибудь вроде _MyFunc@4.
Вариант решения 1: используя dumpbin (входит в состав Visual Studio /
Windows SDK), узнать имя функции в секции экспорта dll.
Например:
Code
1
dumpbin.exe /ALL /RAWDATA:NONE путь-к-dll
Вариант решения 2: использовать для экспорта функций DEF-файл,
тогда имя искажаться не будет.
0
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 13
26.10.2014, 22:31  [ТС]
Ну я, вроде как, создал деф файл для длл. Просто создал) Не знаю ни что с ним делать, ни правельно ли написал



C++
1
2
3
LIBRARY MyDll
EXPORTS
sort
Все что написал внутри. Куда его и как? помогите)
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
26.10.2014, 22:34
Добавить его в проект.
0
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 13
26.10.2014, 22:37  [ТС]
добавил в оба, там где делал саму библиотеку и нажал ф7 , заменил длл и либ в следуещем проекте. Не пошло.

Добавил сразу к использующему длл - не пошло.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
26.10.2014, 22:50
Цитата Сообщение от Убежденный Посмотреть сообщение
Например, вместо MyFunc получится что-нибудь вроде _MyFunc@4.
это искажения С++
поэтому вариант третий
писать перед экспортируемой функцией
extern "C" тогда искажений не будет
http://ru.wikibooks.org/wiki/DLL
http://msdn.microsoft.com/ru-r... sfaz2.aspx
http://www.infocity.kiev.ua/pr... c036.phtml
вариант четвертый
загружать функцию по номеру(не помню как он по научному называется,Убежденный, подскажет)
номер можно посмотреть любой утилиткой показыващей внутренности DLL я пользуюсь PEExplorer
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
26.10.2014, 22:59
Цитата Сообщение от ValeryS Посмотреть сообщение
extern "C" тогда искажений не будет
Только если использовать _cdecl.

Цитата Сообщение от AWOL14 Посмотреть сообщение
добавил в оба, там где делал саму библиотеку и нажал ф7 , заменил длл и либ в следуещем проекте. Не пошло.
Добавил сразу к использующему длл - не пошло.
"Не пошло" - это не информативно.
Мысленно представляйте, как пользователи вашей будущей программы
пишут в саппорт в таком духе: "не работает, памагите". Где коды ошибок,
last error, логи, дампы ?.. Что именно и куда "не пошло" ?

Кстати, вот: Как верно экспортить функцию?
По ссылке - эксперименты с __declspec(dllexport), DEF-файлами и различными
способами компоновки и экспорта.
0
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 13
26.10.2014, 23:09  [ТС]
ответ линкера
1> Skipping... (no relevant changes detected)
1> dllmain.cpp
1>DEF.def : fatal error LNK1107: invalid or corrupt file: cannot read at 0x25

Добавлено через 4 минуты
писал через
C++
1
2
3
4
5
6
extern "C++"
__declspec(dllexport)
void _cdecl sort(int *, int, int)
{
    ...
}
не помогло тоже
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
26.10.2014, 23:12
Цитата Сообщение от Убежденный Посмотреть сообщение
Только если использовать _cdecl.
ну я не акцентировал на этом внимания, но по ссылкам это есть

Добавлено через 53 секунды
Цитата Сообщение от AWOL14 Посмотреть сообщение
extern "C++"
и
Цитата Сообщение от ValeryS Посмотреть сообщение
extern "C"
разницу видишь
0
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 13
26.10.2014, 23:17  [ТС]
Выходи за меня. Спасибо. Всем вам спасибо)) заработало. сори за тупость, видимо не пошло(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2014, 23:17
Помогаю со студенческими работами здесь

Ручная загрузка DLL
Реализовать &quot;ручную&quot; загрузку DLL-библиотеки (не используя функцию LoadLibrary) в память своего процесса (выделение памяти, разложение по...

Динамическая загрузка DLL
Я написал библиотеку и использую ее в консольном приложении подключая динамически. В конфигурации x64 все работает нормально, а в...

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual Studio 2013. При компиляции выдает ошибку...

Загрузка своего кода в память другого процесса без использования dll
Привет всем! Никак не могу разобрать с тем как внедрять именно код в пямять другого процесса. С внедрением dll вроде как разобрался, а вот...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями?
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru