Auf eine DLL zugreifen
-
hi,
ich will auf eine Funktion die in einer DLL steht zugreifen. Die Funktion sieht so aus:
void Beschreibung(TMemo *info) { info->Lines->Add("BeispielText"); }
mein Code sieht so aus:
int TfrmDllManager::testDLL(AnsiString datei) { try { void (__stdcall *Beschreibung)(TMemo *info); HINSTANCE hdll=LoadLibrary( datei.c_str() ); Beschreibung = (void(__stdcall*)(TMemo *info)) GetProcAddress(hdll, "_Beschreibung"); Beschreibung(memInfo); FreeLibrary(hdll); } catch(...) { return 0; } return 1; }
doch leider gibts eine Zugrifsverletzung bei 0x00000000, heißt das die funktion ins leere greift oder ist mein aufruf falsch?
-
Probiers mal so:
int Beschreibung(TMemo *info) { int iRetVal = 0; if (info) { info->Lines->Add("BeispielText"); iRetVal = 1; } return iRetVal; } int TfrmDllManager::testDLL(AnsiString datei) { try { IMPFUNC DllFunktion; typedef int (__stdcall *IMPFUNC) (TMemo *); // Zeiger auf die DLL-Funktion HINSTANCE hdll=LoadLibrary(datei.c_str()); if (hdll) // Wenn DLL geladen { // DLL Funktion suchen DllFunktion = (IMPFUNC)GetProcAddress(hdll, "_Beschreibung"); if (DllFunktion) DllFunktion(memInfo); // Funktion ausführen FreeLibrary(hdll); } } catch(...) { return 0; } return 1; }
-
leider geht das auch nicht. Dann werd ich das ganze mit Objekten machen statt Zeigern,d as geht wenichstens