Wie bindet man DLL,s in programm ein?



  • Hi!
    Wie schraubt man eigentlich eine DLL-bibliothek in ein übergeordnetes programm rein??
    und zwar mit dem minGW-Compiler, IDE ist Codeblocks.

    Was ich mir denken kann ist, das man die klassen,funktionen,etc, die man als DLL zur Verfügung haben will, erst mal als DLL compiliert, aber dann? wie bindet man die Dll in ein übergeordnetes programm ein?

    mfg
    prokaion



  • Falsches Unterforum ! Diese Frage gehört in den API - Bereich. Der Forumbot wird es später evtl. verschieben. Nun zu deiner Frage (bzw. Antwort):

    So bindest du die DLL ins Projekt ein:

    typedef void (*pDeineFunktion)(); 
    
    pDeineFunktion DeineFunktion;
    
    HINSTANCE hLib; 
    hLib = LoadLibrary("DeineDLL.dll"); //Holt mir das Handle auf die DLL
    BOOL status; //Benötigen wir zum Lösen des Handels.
    
    if (hLib) //Wenn Handle erfolgreich
    {
      DeineFunktion= (pDeineFunktion ) GetProcAddress (hLib, "DeineFunktion"); //Hier holst du dir die Prozessadresse
    
      DeineFunktion ();  
    
    /*Nun kannst du deine erfologreich eingebundene Funktion wie gewohnt aufrufen. Wichtig dabei ist aber, dass du erst
     für jede Funktion ein Handle besorgen musst, da sonst dein Programm garnicht wissen kann, wo es sie findet. */
    } 
    
    status = FreeLibrary(hLib); //Löst das Handle wieder
    

    Hoffe, das hilft dir. 🙂

    Die Funktions und -DLL Namen musst du natürlich entsrpechend ändern. Zudem sollte sich in díesem Fall die DLL im Programmverzeichnis befinden.

    PS: Wenn du Näheres erfahren möchtest, wie z.B der Code aufgebaut ist, was die Funktionen bewirken, dann guck einfach mal in die MSDN nach. (Aber das müsstest du mittlerweile schon wissen 😃 )

    MfG, mikey.



  • Hey, Danke!! 🙂
    mal sehen, ob ich damit was anfangen kann!
    Aber, wie importiert man dann Klassen?? also nicht nur funktionen?



  • Aber, wie importiert man dann Klassen?? also nicht nur funktionen?

    Das weis ich leider auch nicht, bin in Sachen DLL's auch noch ein Anfänger. Warte mal auf die anderen, die helfen dir bestimmt.

    Wenn du Fragen zum Code hast, einfach nur fragen 😉

    MfG, Mikey.



  • nö, soweit erstmal alles klar! mit funktionen gehts...
    hab auch den andern beitrag gelesen (DLL mit DevC++...), ich frag mich höchstens warum die funktionen in der DLL von diesem "extern C" umgeben sein müssen...



  • Hm!
    Beim kompilieren einer (eigenen) DLL kommen ja immer 2 files raus: einmal die DLL und einmal eine statische lib mit gleichem namen wie die DLL.

    ich hab jetzt mal die statische lib einfach noch für den linker mit angegeben, dann gehts auch mit klassen!! Es scheint dann tatsächlich zu funktionieren! unglaublich! irgendwie hab ich erwartet, das wär viel schwieriger...



  • Na, ist doch auch was 🙂

    Gut, dass es auch Leute gibt, die mal was selbstständig erledigen. Freut mich, dass es bei dir nun funktioniert, und dass ich dir etwas helfen konnte. Dir noch viel Spass, und man sieht sich !

    MfG, mikey.


Anmelden zum Antworten