Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
abrdabr
Заблокирован
#1

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

10.11.2016, 20:58. Просмотров 180. Ответов 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 -> request example (C++):

Вызов Dll-фий в другой Dll - C++
не получается дернуть dll в другой dll. Подскажите, как должен происходить вызов dll1 в dll2 ? (псевдокод) dll1.cpp { int...

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

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

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

Вызов функции с DLL - C++
Сразу говорю пишу программу как и *.dll в VisualStudio 2010. Суть: написал dll, вроде-бы все нормально скомпилировало и удачно создало...

Вызов функции из dll - C++
Привет всем! Пишу программу на Java. Спокойно, форум тот... Моя программа должна работать с устройством, висящим на LPT-порте. Для этого...

3
Max Dark
шКодер самоучка
1873 / 1673 / 607
Регистрация: 09.10.2013
Сообщений: 3,718
Записей в блоге: 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
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
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 из подпрограммы - C++
Я сделал dll и вызов функции из мейна основной программы Я хочю, в мейне загрузить саму dll а вызывать функции из других мест программы ...

Вызов функции из dll - C++
Доброго времени суток! Пытаюсь вызвать функцию, которая находится в библиотеке следующим способом: HINSTANCE dllhandle =...

Вызов метода класса из DLL - C++
Добрый вечер. Имеется длл, в которой есть: 1. Класс, содержащий метод 2. Функция, возвращающая объект этого класса Если п.2...

Вызов функции, использующей vector, из dll - C++
Всем привет! Проблема в следующем: есть dll-ка, в ней 3 простых функции: 1. Sum - сложение 2х целых чисел. 2. Concat - соединяет 2...


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

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

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