Zugriffsverletzung
-
Hi zusammen,
Lade eine DLL über LoadLibrary und führe dann eine DLL-Funktion über GetProcAddress aus. Hier funktioniert auch alles wunderbar. Die Library wird geöffnet nd die Funktion gibt mir auch den richtigen Rüchkabewert.
Sollte alles passen.Jetzt möchte ich den zurückgegeben wert wiederum in meine Funktion als return wert zurückgeben und hier kommt eine Zugriffsverletzung!?
Warum?sint32 CWrapperDll::InitCommunication(sint32 s32_ComPort, char Device_Status, char Adress, HINSTANCE h_DLL) { // store the handle to DLL mh_Dll = h_DLL; // load the function from dll dll_OpenDevice = (OpenHARTDeviceDLL)GetProcAddress(mh_Dll, "_MyFunction"); if (dll_OpenDevice == NULL) { // function not found in dll return -1; } // store the com port ms32_ComPort = s32_ComPort; // call the function in the dll const sint32 s32_rc = dll_OpenDevice (s32_ComPort, Device_Status, Adress); // an error occurs if the return value is <> 0 //return s32_rc; return s32_rc; //#] //Hier kommt die Zugriffsverletzung!!!! }
So rufe ich die Funtion in eine anreden Klasse auf:
//CWrapperDll *itsCWrapperDll > INstanz von Wrapperklasse //mh_DLL = HINSTANCE im Header definiert sint32 s32_rc = itsCWrapperDll->InitCommunication ((sint32) u16_CommPort, (char) Device_Status, (char) Adress, mh_DLL);
Warum kommt es hier zu einer ZUgriffsverletzung. Wenn ich den Funktionsaufruff der DLL-Funktion rausnehmen, dannn nicht! Liegt das an der DLL?
Danke Grüße
-
wie sieht den der typdef von dll_OpenDevice aus?