Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
abrdabr
Заблокирован
1

Вызов dll из dll -> request example

10.11.2016, 20:58. Просмотров 214. Ответов 3
Метки нет (Все метки)

Вызывающий код
C++
1
2
3
4
5
6
7
8
9
  void (*dllHelloWorld) (void); //ok
            LPCTSTR s = L"dll.dll"; //ok 
HINSTANCE hlib = LoadLibrary(s); //ok
 
if(hlib){} //ok
  dllHelloWorld = (void (*)(void))GetProcAddress(hlib, "Demo"); //ok
  if(dllHelloWorld)  {} //ok
 dllHelloWorld();// Вызывает крах экзешника
  if(!FreeLibrary(hlib)){} // если нет краха то выгрузка ок
вызываемый код
C++
1
2
3
4
#include <stdio.h>
 
__declspec(dllexport) int Demo(char *str) {
        return 772;}
Вобщем нужно убрать крах и подскажите как передать аргументы и получить результат в вызывающем dll и желательно как узнать в вызывающем dll количество запрашиваемых параметров функцией Demo()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2016, 20:58
Ответы с готовыми решениями:

Вызов Dll-фий в другой Dll
не получается дернуть dll в другой dll. Подскажите, как должен происходить...

Вызов dll ресурсов в dll
Помогите пожалуйста, вот такого рода проблемка вышла: Есть у меня dll и есть...

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

Вызов dll из подпрограммы
Я сделал dll и вызов функции из мейна основной программы Я хочю, в мейне...

Вызов функции с DLL
Сразу говорю пишу программу как и *.dll в VisualStudio 2010. Суть: написал...

3
Max Dark
шКодер самоучка
1968 / 1745 / 860
Регистрация: 09.10.2013
Сообщений: 3,853
Записей в блоге: 6
Завершенные тесты: 2
10.11.2016, 21:03 2
abrdabr, у вас сигнатрура не совпадает. попробуйте так:
C++
1
2
3
4
5
6
7
8
9
  int (*dllHelloWorld) (char*);
            LPCTSTR s = L"dll.dll";
HINSTANCE hlib = LoadLibrary(s);
 
if(hlib){}
  dllHelloWorld = (int (*)(char*))GetProcAddress(hlib, "Demo");
  if(dllHelloWorld)  {}
 dllHelloWorld(nullptr);
  if(!FreeLibrary(hlib)){}
0
abrdabr
Заблокирован
10.11.2016, 21:44  [ТС] 3
Max Dark, заменил но визуал студо ругается на dllHelloWorld = (void (*)(void))GetProcAddress(hlib, "Demo");. изменил на void в вызываемой но по прежнему крашится

Добавлено через 36 минут
сорри ошибся с дебагером ошибка в другом месте
C++
1
2
3
4
5
6
7
8
9
  void (*dllHelloWorld) (void); //ok
            LPCTSTR s = L"dll.dll"; //ok 
HINSTANCE hlib = LoadLibrary(s); //ok
 
if(hlib){} //ok
  dllHelloWorld = (void (*)(void))GetProcAddress(hlib, "Demo"); //ok
  if(dllHelloWorld)  {} //FALSE
 dllHelloWorld();// Вызывает крах экзешника
  if(!FreeLibrary(hlib)){} // если нет краха то выгрузка ок
ну теперь понятно почему был крах. но как исправить хз((
0
DrOffset
8466 / 4743 / 1161
Регистрация: 30.01.2014
Сообщений: 7,733
11.11.2016, 18:01 4
Цитата Сообщение от abrdabr Посмотреть сообщение
но как исправить хз
C++
1
extern "С"
добавить для функции Demo. Почитать про name mangling и вот эту статью.
И вызов функции запихнуть под проверку
C++
1
2
3
4
dllHelloWorld = (void (*)(void))GetProcAddress(hlib, "Demo");
  if(dllHelloWorld)  {
      dllHelloWorld();
  } //FALSE
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2016, 18:01

Вызов управляемой DLL
Приветствую. Только-только начал учить С++, поэтому прошу прощения заранее,...

Вызов функции из dll
Привет всем! Пишу программу на Java. Спокойно, форум тот... Моя программа...

Вызов функции из dll
Доброго времени суток! Пытаюсь вызвать функцию, которая находится в библиотеке...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru