DLL zur Laufzeit einbinden, Problem bei typedef



  • Hallo,
    ich würde gerne Funktionen einer DLL zur Laufzeit einbinden.
    Das klappt bei den meisten schon gut, nur leider macht mir ein Typ an Funktionen ein Problem. Diese DLL-Funktion erwartet ein Pointer auf eine Funktion als Parameter. Dabei hänge ich jetzt an dieser Zeile:

    typedef int (WINAPI *DLLFunc_int__func) (int __stdcall (*MyOnScan)(char *));
    

    Die Fehlerausgabe lautet:

    1>: error C2143: Syntaxfehler: Es fehlt ')' vor '__stdcall'
    1>: error C2059: Syntaxfehler: ')'

    Funktionieren tut dagegen zum Beispiel:

    typedef int (WINAPI *DLLFunc_int__bool) (bool);
    

    Die Funktion MyOnScan ist definiert als:

    int __stdcall DGTEboard::MyOnScan (char * scanned_position)
    {
    	return 1;
    }
    

    Ich hoffe jemand kann mir dabei Helfen.

    lg kmuecke



  • Erstmal hat das ganze nichts mit MFC zu tun ...

    Dann ist __stdcall und WINAPI das gleiche - genau wie CALLBACK (also doppelt)

    Ein erster Ansatz wäre:

    typedef int (CALLBACK* DLLFunc_INT)(char *);   
    DLLFunc_INT MyOnScan;
    HMODULE hDLL;
    TCHAR *meinedll=L"test.dll";
    
    hDLL = LoadLibrary( meinedll);
    
    MyOnScan = (DLLFunc_INT)GetProcAddress( hDLL, "MyOnScan" );
    

    Wie du das ganze aus der Klasse DGTEboard rausbekommst ist da noch ungelöst.

    Sicher würde man mit obigem Ansatz den Zeiger auf die Instanz bekommen
    mit dem man wiederum auf Memberfunktionen zugreifen könnte.


Anmelden zum Antworten