Stvari stoje ovako: nemam header za taj DLL, ali znam tacno kako ta procedura izgleda, pa sam po Tatinom savetu lepo pokusao da odradim to sa LoadLibrary itd., medjutim javlja mi AccessViolation nakon ulaska
u DLL. E onda sam ja lepo resio da pokusam da ucitam bilo kakav Delphi DLL (neki najprostiji, jer ne znam sta se sve desava sa onim TTable* i TExcelApplication* u originalnom DLL-u), cisto da vidim da li to uopste funkcionise.
Ovde Delphi exportuje funkciju Brojevi():Integer;stdcall; koja prikazuje prostu formu sa dva dugmeta i poljima za unos brojeva i vraca njihov proizvod ili njihov zbir.(nebitno...)
Evo mog koda:
Code:
typedef int __stdcall(*TpFunc)(void);
TpFunc pFunc(0);
HINSTANCE pDll = LoadLibrary("DllForm.dll");
if(pDll!=NULL)
{
pFunc = (TpFunc)GetProcAddress(pDll,"Brojevi");
if(pFunc!=NULL)
{
try
{
Edit1->Text = IntToStr(pFunc());
// FreeLibrary(pDll);
}
catch(EAccessViolation&)
{
ShowMessage("Access Violation.");
exit(0);
}
}
}
}
E sada meni neko da objasni zasto mi program puca kod FreeLibrary(pDll); (zato je iskomentarisano),
inace radi normalno (?), i uopste, zar nije potrebno pozvati FreeLibrary nakon LoadLibrary ?
Nemam iskustva sa Win API funkcijama za rad sa DLL-ovima, ali koliko sam citao po help-u , ovom
kodu nista ne fali...ili se varam ?
[
Ovu poruku je menjao leka dana 14.03.2002 u 06:46 PM GMT]
[
Ovu poruku je menjao leka dana 14.03.2002 u 06:46 PM GMT]