1. Was ist eine statische Verbindungsbibliothek (LIB) und was ist eine dynamische Linkbibliothek (DLL)? Sowohl statische als auch dynamische Linkbibliotheken teilen Code, beide im Binärformat
2. Der Unterschied zwischen der statischen Linkbibliothek LIB und der dynamischen Linkbibliotheks-DLL Wenn du eine statisch verknüpfte Bibliothek verwendest, sind alle Anweisungen in der Bibliothek direkt in der resultierenden EXE-Datei enthalten. Die dynamische Linksbibliothek muss nicht in der finalen EXE-Datei enthalten sein, die beim Ausführen der EXE-Datei "dynamisch" referenziert und entladen werden kann. Ein weiterer Unterschied besteht darin, dass eine statische Linkbibliothek keine anderen dynamischen oder statischen Linkbibliotheken mehr enthalten kann, während eine dynamische Linkbibliothek andere dynamische oder statische Linkbibliotheken enthalten kann.
3. Statische Linkbibliotheksaufrufmethode: Lass uns überleben, um eine Bibliotheksdatei zu generieren:
VS2017--> Erstellen Sie ein neues Projekt – >Windows-Desktop --> statische Bibliothek, der Projektname ist Libtest
Neue functem.h und functem.cpp
functem.h:
#pragma einmal #include "stdafx.h" #ifndef _functem_H #define _functem_H int funktem (int a, int b); #endif
functem.cpp:
#include "functem.h" #include "stdafx.h"
int funct(int a, int b)
{ Zurück a + b;
} Dann generiere das Projekt, und es werden zwei Dateien, Libtest.lib und Libtest.pdb, im Debug-Verzeichnis enthalten
Beim Anrufen sind drei Schritte erforderlich:
1. Kopiere Libtest.lib und functem.h in das Verzeichnis des Aufrufers; wie in der Abbildung unten gezeigt:
2. Füge #include "functem.h" über der aufrufenden CPP-Datei hinzu
3. Füge #pragma Kommentar (Lib, "Libtest.lib") über der aufrufenden cpp-Datei hinzu
Wie in der obigen Abbildung gezeigt, war der Call erfolgreich.
4. Dynamische Linkbibliotheksaufrufmethode: Erstelle ein neues Projekt – > dynamische Link-Bibliothek mit dem Projektnamen Dlltest
Erstelle eine neue Dlltest.h:
#pragma einmal #ifndef __CDLL_H__ #define __CDLL_H__ extern "C" int _declspec(dllexport) add(int x, int y); #endif
Dlltest.cpp:
#include "stdafx.h" #include "Dlltest.h" int Add(int x, int y)
{ zurück x + y;
} Generiere das Projekt, im Debug-Verzeichnis findest du:
Anrufprozess:
1. Kopiere Dlltest.dll, Dlltest.lib und Dlltest.h und kopiere sie in das Verzeichnis des Aufrufers; wie in der Abbildung unten gezeigt:
PS: Hier wird Dlltest.lib tatsächlich nur beim Kompilieren des Compiler-Links verwendet, sodass man nach der Programmerzeugung die Lib-Datei nicht mehr einfügen kann, sondern nur die DLL-Datei, und der eigentliche Zweck ist tatsächlich die DLL-Datei. Kurz gesagt: Alle drei Dateien müssen kopiert werden, aber .h und .lib werden verwendet, um Links zu kompilieren, und nur .dll müssen im endgültig generierten Verzeichnis platziert werden.
2. Füge #include "Dlltest.h" über die aufgerufene CPP-Datei hinzu
3. Fügen Sie #pragma Kommentar (lib, "Dlltest.lib") über der aufrufenden CPP-Datei hinzu
Der Anruf ist erfolgreich! --------------------- Autor: Bird Quelle: CSDN Original: https://blog.csdn.net/wcc27857285/article/details/84615891 Copyright-Hinweis: Dieser Artikel ist ein Originalartikel des Bloggers, bitte fügen Sie den Link zum Nachdruck des Blogbeitrags bei!
|