Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

использование Delphi Dll библиотек в VC++

4.8K
30 января 2007 года
fakel15
54 / / 02.12.2005
Пытаюсь использовать функции из Dll библиотеки, которая написана на Delphi. Ничего не получается!!!
код приведен ниже
#include "stdafx.h"
#include <iostream>
#include <tchar.h>
#include <windows.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
typedef unsigned int (com)(void);
com * wt;
HMODULE h=::LoadLibrary("PIC18_Modbus_Lib.dll");
wt=(com*)::GetProcAddress(h, "getComNom");
cout << (*wt)(); //на данном этапе происходит ошибка.
cin.get();
return 0;
}
там где происходит ошибка(отмечено комментарием) отладчик выдает сообщение: Unhandled exception at 0x0038caf5 in dll32_work.exe: 0xC0000005: Access violation reading location 0x000002dc.
И так со всеми функциями и процедурами библиотеки.
(может дело в особом подходе к библиотекам собраных на Delphi)
Помогите, если сможете, заранее благодарен.
p.s. если хотите могу выслать библиотеку и описание содержащихся в ней функций.
1
30 января 2007 года
kot_
7.3K / / 20.01.2000
Цитата: fakel15
Пытаюсь использовать функции из Dll библиотеки, которая написана на Delphi. Ничего не получается!!!
код приведен ниже
#include "stdafx.h"
#include <iostream>
#include <tchar.h>
#include <windows.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
typedef unsigned int (com)(void);
com * wt;
HMODULE h=::LoadLibrary("PIC18_Modbus_Lib.dll");
wt=(com*)::GetProcAddress(h, "getComNom");
cout << (*wt)(); //на данном этапе происходит ошибка.
cin.get();
return 0;
}
там где происходит ошибка(отмечено комментарием) отладчик выдает сообщение: Unhandled exception at 0x0038caf5 in dll32_work.exe: 0xC0000005: Access violation reading location 0x000002dc.
И так со всеми функциями и процедурами библиотеки.
(может дело в особом подходе к библиотекам собраных на Delphi)
Помогите, если сможете, заранее благодарен.
p.s. если хотите могу выслать библиотеку и описание содержащихся в ней функций.


Во первых, всегда надо проверять валидность указателя. Во вторых посмотри с каким именем функция экспортируется. скорее всего правильным будет не

 
Код:
wt=(com*)::GetProcAddress(h, "getComNom");

а
 
Код:
wt=(com*)::GetProcAddress(h, "_getComNom");

конечно при условии, что все остальное сделано у тебя верно.
7.9K
05 февраля 2007 года
***Zebr@XXL***
47 / / 18.08.2005
Проблемма наверняка в способе передачи параметров. Попробуй везде проставить везде stdcall
1.8K
05 февраля 2007 года
_const_
229 / / 26.11.2003
Цитата: fakel15
Пытаюсь использовать функции из Dll библиотеки, которая написана на Delphi. Ничего не получается!!!
код приведен ниже
#include "stdafx.h"
#include <iostream>
#include <tchar.h>
#include <windows.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
typedef unsigned int (com)(void);
com * wt;
HMODULE h=::LoadLibrary("PIC18_Modbus_Lib.dll");
wt=(com*)::GetProcAddress(h, "getComNom");
cout << (*wt)(); //на данном этапе происходит ошибка.
cin.get();
return 0;
}
там где происходит ошибка(отмечено комментарием) отладчик выдает сообщение: Unhandled exception at 0x0038caf5 in dll32_work.exe: 0xC0000005: Access violation reading location 0x000002dc.
И так со всеми функциями и процедурами библиотеки.
(может дело в особом подходе к библиотекам собраных на Delphi)
Помогите, если сможете, заранее благодарен.
p.s. если хотите могу выслать библиотеку и описание содержащихся в ней функций.



 
Код:
typedef unsigned int (__stdcall com)(void);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог