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?


Anmelden zum Antworten