__declspec (dllimport) wie man die Bibliothek lädt

9

Ссылка

MSDN sagt, dass ich Funktion mit __declspec(dllexport) aus der Bibliothek exportieren kann, aber wie kann ich diese Bibliothek in meine ausführbare Datei laden?

Ich habe eine exportierte Funktion in der DLL:

%Vor%

Und jetzt möchte ich es in meiner ausführbaren Datei verwenden:

%Vor%

Aber wie wird mein Programm wissen, wo diese Funktion zu finden ist?

    
deepspace 29.07.2013, 22:11
quelle

3 Antworten

7

Dies ist der Compiler / Linker-Job, er wird automatisch ausgeführt, solange Sie

  1. enthält die .lib in den Linker-Optionen
  2. liefert die DLL zur Laufzeit, so dass sie von der exe
  3. gefunden wird

Die .lib-Datei wird beim Kompilieren der DLL generiert oder mit ihr geliefert, wenn es sich nicht um Ihren Code handelt. In diesem Fall wird der Code mit __declspec(dllexport) kompiliert.

Beim Kompilieren Ihrer Exe sieht der Compiler, dass die enthaltene Funktion in DLL zu finden ist. In diesem Fall wird der Code mit __declspec(dllimpport) kompiliert.

Der Linker wird mit der .lib-Datei bereitgestellt und generiert entsprechende Anweisungen in der exe.

Diese Anweisungen veranlassen die Exe, die DLL zu finden und die exportierte Funktion zur Laufzeit zu laden. Die DLL muss nur neben der Exe liegen (es gibt jedoch andere mögliche Orte).

Der Wechsel zwischen __declspec(dllimpport) und __declspec(dllexport) erfolgt über ein Makro, , das von Visual C ++ beim Erstellen eines DLL-Projekts bereitgestellt wird .

    
CharlesB 29.07.2013, 22:17
quelle
3

Wenn Sie eine DLL verwenden, können Sie die Kombination LoadLibrary und GetProcAddress verwenden.

%Vor%     
Kirk Backus 29.07.2013 22:21
quelle
1

Ihr Betriebssystem kann es basierend auf dem Verknüpfungsprozess finden. Wenn Ihre Bibliothek ordnungsgemäß mit Ihrem Programm verknüpft ist, erkennt sie, dass eine externe Funktion verwendet wird, und suchen Sie in den DLL-Pfaden danach. Wenn es nicht gefunden werden kann, wird Ihr Linker einen Fehler auslösen.

Ich empfehle, den Verknüpfungsprozess etwas zu lesen; Es kann manchmal verwirrend sein, aber es zu verstehen, kann Ihnen helfen, einige Schlüsselkonzepte in C / C ++ zu verstehen.

    
Forest Kunecke 29.07.2013 22:16
quelle

Tags und Links