использование Delphi Dll библиотек в VC++
код приведен ниже
#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. если хотите могу выслать библиотеку и описание содержащихся в ней функций.
Цитата: 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. если хотите могу выслать библиотеку и описание содержащихся в ней функций.
код приведен ниже
#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");
конечно при условии, что все остальное сделано у тебя верно.
Проблемма наверняка в способе передачи параметров. Попробуй везде проставить везде stdcall
Цитата: 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. если хотите могу выслать библиотеку и описание содержащихся в ней функций.
код приведен ниже
#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);