код:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
void calldll();
int main(int argc, char *argv[])
{
calldll();
system("PAUSE");
return EXIT_SUCCESS;
}
void calldll()
{
HINSTANCE LoadMe;
LoadMe = LoadLibrary("Trans_ATL.dll");
if(LoadMe!=0)
cout<<"loaded successfully\n";
else
cout<<"loading error\n";
/* get pointer to the functions in the dll*/
FARPROC function01 = GetProcAddress(LoadMe,"EnableLastCharTashkeel");
FARPROC function02 = GetProcAddress(LoadMe,"EnableEmphaticLAM_RAA");
FARPROC function03 = GetProcAddress(LoadMe,"SetText");
FARPROC function04 = GetProcAddress(LoadMe,"GetResult");
typedef void (__stdcall * pICFUNC01)(bool);
typedef void (__stdcall * pICFUNC02)(bool);
typedef bool (__stdcall * pICFUNC03)(string);
typedef string (__stdcall * pICFUNC04)(string);
pICFUNC01 EnableLastCharTashkeel_function;
EnableLastCharTashkeel_function = pICFUNC01(function01);
pICFUNC02 EnableEmphaticLAM_RAA_function;
EnableEmphaticLAM_RAA_function = pICFUNC02(function02);
pICFUNC03 SetText_function;
SetText_function = pICFUNC03(function03);
pICFUNC04 GetResult_function;
GetResult_function = pICFUNC04(function04);
EnableLastCharTashkeel_function(true);
EnableEmphaticLAM_RAA_function(true);
FreeLibrary(LoadMe);
}
в этом коде я вызываю dll, она успешно загружается, но когда я пытаюсь использовать любую функцию, она компилируется без ошибок, но в строке
EnableLastCharTashkeel_function (истина); (первый вызов функции)
он замерзает и дает мне следующее
Необработанное исключение в 0x00000000 в test_trans_new.exe: 0xC0000005: расположение чтения нарушения доступа 0x00000000.
Я предполагаю, что это потому, что указатель на функцию указывает на NULL, но я не знаю, как это исправить
Я использую Visual C ++ 2010
спасибо заранее
спасибо за все ваши ответы, которые действительно полезны, но проблема все еще возникает, но я приблизительно знаю причину, если я исправлю проблему, в том, что функции, к которым я пытаюсь получить доступ, имеют тип COM, так что любая идея об использовании этого типа *
заранее спасибо