1. Vad är ett statiskt anslutningsbibliotek (LIB) och vad är ett dynamiskt länkbibliotek DLL? Både statiska och dynamiska länkbibliotek delar kod, båda i binärt format
2. Skillnaden mellan statiskt länkbibliotek LIB och dynamiskt länkbibliotek DLL Om du använder ett statiskt länkat bibliotek inkluderas alla instruktioner i biblioteket direkt i den resulterande EXE-filen. Det dynamiska länkbiblioteket behöver inte inkluderas i den slutliga EXE-filen, som kan refereras till och avlastas "dynamiskt" när EXE-filen körs. En annan skillnad är att ett statiskt länkbibliotek inte längre kan innehålla andra dynamiska eller statiska länkbibliotek, medan ett dynamiskt länkbibliotek kan innehålla andra dynamiska eller statiska länkbibliotek.
3. Statisk länkbiblioteksanropsmetod: Låt oss överleva för att generera en lib-fil:
VS2017--> Skapa ett nytt projekt-->Windows-skrivbord--> statiskt bibliotek, projektnamnet är Libtest
Ny functem.h och functem.cpp
functem.h:
#pragma en gång #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 funktem(int a, int b)
{ återlämna a + b;
} Generera sedan projektet, och det kommer att finnas två filer, Libtest.lib och Libtest.pdb, i Debug-katalogen
När man ringer krävs tre steg:
1. Kopiera Libtest.lib och functem.h till anroparens katalog; som visas i figuren nedan:
2. Lägg till #include "functem.h" ovanför den anropande cpp-filen
3. Lägg till #pragma kommentar (lib, "Libtest.lib") ovanför den anropande cpp-filen
Som visas i figuren ovan har anropet varit framgångsrikt.
4. Dynamisk länkbiblioteksanropsmetod: Skapa ett nytt projekt – > dynamiskt länkbibliotek med projektnamnet Dlltest
Skapa en ny Dlltest.h:
#pragma en gång #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)
{ returnera x + y;
} Generera projektet, i Debug-katalogen finns:
Samtalsprocessen:
1. Kopiera Dlltest.dll, Dlltest.lib och Dlltest.h och kopiera dem till anroparens katalog; som visas i figuren nedan:
PS: Här används faktiskt Dlltest.lib endast vid kompilering av kompilatorlänken, så efter att programmet genererats kan du inte inkludera lib-filen, bara dll-filen, och den verkliga användningen är faktiskt dll-filen. Kort sagt måste alla tre filer kopieras, men .h och .lib används för att kompilera länkar, och endast .dll behöver placeras i den slutliga genererade katalogen.
2. Lägg till #include "Dlltest.h" ovanför den anropade cpp-filen
3. Lägg till #pragma kommentar (lib, "Dlltest.lib") ovanför den anropande cpp-filen
Samtalet är framgångsrikt! --------------------- Författare: Bird Källa: CSDN Original: https://blog.csdn.net/wcc27857285/article/details/84615891 Upphovsrättsmeddelande: Denna artikel är en originalartikel av bloggaren, vänligen bifoga länken till blogginlägget för återpublicering!
|