Funktionsdeklaration bei laden aus DLL



  • Hallo,

    Um die DLL zu laden benutze ich LoadLibrary

    typedef int (_stdcall *FUNCPTN)( ?parameter? ); //Ist das die Deklaration der Funktion? 
    HMODULE hmLib = LoadLibrary("myDll.dll"); 
    
    FMyFunc = (FUNCPTN) GetProcAddress(hmLib,"FMyFunc");
    

    a. Ist das die Deklaration der Funktion?
    b. Warum gibt es keinen Fehler wenn ich anstatt GetProcAddress(hmLib,"FMyFunc") GetProcAddress(hmLib,"Irgendwas") schreibe.
    c. Wie finde ich heraus wie die Funktion zu deklarieren ist?



  • bin auf arbeit, habe also den quellcode nicht da aber die deklaration müsste in etwa so aussehen:

    int   (*myFunc)(char *);                              //char ist dann parameter
    HINSTANCE hmLib = NULL;
    if (NULL != (hmLib = LoadLibrary("myDll.dll")))               // wenn = NULL
    {                                                             // -> Fehler
       MyFunc= (int (*)(char *)) GetProcAddress(hmLib,"FMyFunc"); // noch casten
       FreeLibrary (hmLib);                                       // nich vergessen
       if (NULL != MyFunc)                                        // wenn = NULL...
       {
          MyFunc (/*parameter*/);
          return true;
       }
       else
          return false;
    }
    else
       return false;
    

    ich hoffe so funktionierts, wenn nich schreibs rein und ich korrigiere es dann montag

    ps: ich glabe MyFunc sollte man auch noch bei der deklaration auf NULL setzen, weil wenn man sie aufruft und da is nix -> sehr schlecht.


Log in to reply