Wie zu verwenden DLL ohne header in C++
Helfen, bitte. Eine dll-Datei. Ich weiß, dass es Funktionen und Parameter. Wie kann ich es in Eclipse mit MinGW?
- LoadLibrary, dann GetProcAddress können verwendet werden.
- es ist immer ein Kampf, um diese tools zu tun, unser Gebot. es ist immer schlecht dokumentiert, wenn es alle. und nachdem es Ihnen gelingt, Sie vergessen, wie, bis fünf Jahre später. und so weiter. wenn Sie verknüpfen möchten, statisch (was hier bedeutet, dass der linker fügt die Referenzen und das Ladeprogramm wird der DLL Bindung) Sie beginnen mit der Suche in-Modul-definition-Dateien. vielleicht ist Ihr toolchain unterstützt.
- Oft, wenn Sie die Funktionsnamen und-Parameter, aber nicht die header, die einfachste Lösung ist, einfach schreiben Sie einen header selbst. (Hättest du auch wissen müssen die Aufruf-Konvention, aber das ist in jedem Fall erforderlich)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gehe davon aus, dass du windows nutzt. In der WINAPI-Sie haben LoadLibrary und GetProcAddress Funktionen. Hier ist ein Beispiel Nutzung
Habe ich verstanden, Sie wissen, die DLL-Funktion einer Unterschrift und Sie haben nicht die header.
Für eine bestimmte Funktion
dll_function
mit der bekannten Signatur:Können Sie
LoadLibrary
undGetProcAddress
von der Windows-API wie examplified in den folgenden C++ code:ich erstellte eine wrapper zu vereinfachen, diese Art der Sache eine Weile zurück.Update: ich völlig vergessen, über diesem post gelöscht und die blog-post und die zugehörigen source-code. Ich aufgewickelt mit einem baumelnden Zeiger hier 😉
Zum Glück, jemand hat einen viel besseren job als ich gemacht habe: Boost.DLL
Wenn Sie haben, angemessen ist .LIB-Datei, und Sie haben genaue Funktion Prototyp, Sie brauchen nicht zu Kopf. Nur deklarieren Sie die Funktionen, die sich (möglicherweise in Ihre eigenen benutzerdefinierten header). Rufen Sie die Funktionen direkt. Link mit .LIB-Datei. Die DLL bekommen würde geladen, die von OS und Funktionen, die aufgerufen werden würde.
Wenn Sie nicht haben .LIB-Datei, um eine Verknüpfung zu der DLL, die Sie verwenden müssen
LoadLibrary
undGetProcAddress
wie andere vorgeschlagen haben.