Помогите разобраться с Dll в Builder
От: LeoMonster Россия http://ix-group.ru
Дата: 09.06.03 10:37
Оценка:
Здравствуйте!

Есть Dll, на чем написана не известно. Надо подключить в начале работы и выгрузить в конце. Делаю так:

void TForm1::InitKKM()
{
 hKKM = LoadLibrary("chon100.dll");
 void (*pFeed)(int);
 (FARPROC &)pFeed = GetProcAddress(hKKM, "Feed");
 void (*pConnectKKM)(int);
 (FARPROC &)pConnectKKM = GetProcAddress(hKKM, "ConnectKKM");
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 InitKKM(); 
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 FreeLibrary(hKKM);
}


Но при вызове функций

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 pConnectKKM(1);
 pFeed(1);
}


происходит ошибка «Access violation at address 000000. Read of address 000000»
Функции и переменная описаны так:


HANDLE hKKM; 
void (*pFeed)(int);
void (*pConnectKKM)(int);


Что делать?

P.S.: Если делаю так, то все работает... но так нельзя...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 HANDLE hKKM; 
 void (*pFeed)(int);
 void (*pConnectKKM)(int);
 hKKM = LoadLibrary("chon100.dll");
 void (*pFeed)(int);
 (FARPROC &)pFeed = GetProcAddress(hKKM, "Feed");
 void (*pConnectKKM)(int);
 (FARPROC &)pConnectKKM = GetProcAddress(hKKM, "ConnectKKM");
 pConnectKKM(1);
 pFeed(1);
 FreeLibrary(hKKM);
}



Заранее большое спасибо!!!
Программист — это не профессия... это диагноз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.