Wie benutzt man eine Dll?



  • Hallo!

    Ich habe eine Dll und eine Headerdatei bekommen, die ich nutzen möchte.
    Nun habe ich hier im Forum diesen Link gefunden: http://www.c-plusplus.net/forum/viewtopic-var-t-is-2342.html

    Beim Nachlesen in der MSDN bin ich auf dieses Beispiel gestoßen:

    // File:  RUNTIME.C
    // A simple program that uses LoadLibrary and 
    // GetProcAddress to access myPuts from MYPUTS.DLL. 
    
    #include <stdio.h> 
    #include <windows.h> 
    
    typedef VOID (*MYPROC)(LPTSTR); 
    
    VOID main(VOID) 
    { 
        HINSTANCE hinstLib; 
        MYPROC ProcAdd; 
        BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; 
    
        // Get a handle to the DLL module.
    
        hinstLib = LoadLibrary("myputs"); 
    
        // If the handle is valid, try to get the function address.
    
        if (hinstLib != NULL) 
        { 
            ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts"); 
    
            // If the function address is valid, call the function.
    
            if (fRunTimeLinkSuccess = (ProcAdd != NULL)) 
                (ProcAdd) ("message via DLL function\n"); 
    
            // Free the DLL module.
    
            fFreeResult = FreeLibrary(hinstLib); 
        } 
    
        // If unable to call the DLL function, use an alternative.
    
        if (! fRunTimeLinkSuccess) 
            printf("message via alternative method\n"); 
    }
    

    Leider kriege ich nun den Fehler

    Kompilierung läuft...
    com_test2.cpp
    D:\Visual Studio Projects\com_test2\com_test2.cpp(96) : error C2065: 'MYPROC' : nichtdeklarierter Bezeichner
    D:\Visual Studio Projects\com_test2\com_test2.cpp(96) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'ProcAdd'
    D:\Visual Studio Projects\com_test2\com_test2.cpp(96) : error C2065: 'ProcAdd' : nichtdeklarierter Bezeichner
    D:\Visual Studio Projects\com_test2\com_test2.cpp(107) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetProcAddress'
    Fehler beim Ausführen von cl.exe.
    

    Was ist da falsch und wie mache ich das richtig?

    Danke! 🙂



  • Klappt bei mir.



  • In den Fehlermeldungen steht ja auch Zeile 96. Also hast du hier nicht den richtigen Quelltext gepostet.



  • Ups, man sollte das Beispiel wohl komplett übernehmen. 🙄
    Ich hab das aus der Main in die InitInstance kopiert - aber die Includes vergessen.

    Danke, ich guck mal, ob ich jetzt das zum Laufen kriege. 🙂



  • Sieht nciht so aus. 😞

    Ich will nun eine Funktion der Dll aufrufen, aber ich bekomme einen Fehler.

    // If the function address is valid, call the function.
            if (fRunTimeLinkSuccess = (ProcAdd != NULL)) 
                (ProcAdd)(1, 9600, 'E', 7, 1, 0, 0);
    

    D:\Visual Studio Projects\com_test2\com_test2.cpp(115) : error C2197: 'void (__cdecl *)(char *)' : Zu viele Parameter uebergeben


Anmelden zum Antworten