1. Hva er et statisk tilkoblingsbibliotek LIB, og hva er et dynamisk lenkebibliotek DLL? Både statiske og dynamiske lenkebiblioteker deler kode, begge i binærformat
2. Forskjellen mellom statisk lenkebibliotek LIB og dynamisk lenkebibliotek DLL Hvis du bruker et statisk lenket bibliotek, er alle instruksjonene i biblioteket direkte inkludert i den resulterende EXE-filen. Det dynamiske dynamiske lenkebiblioteket trenger ikke å inkluderes i den endelige EXE-filen, som kan «dynamisk» refereres til og tømmes når EXE-filen kjøres. En annen forskjell er at et statisk lenkebibliotek ikke lenger kan inneholde andre dynamiske eller statiske lenkebiblioteker, mens et dynamisk lenkebibliotek kan inneholde andre dynamiske eller statiske lenkebiblioteker.
3. Metoden for statisk lenkebibliotek: La oss overleve for å generere en lib-fil:
VS2017--> Opprett et nytt prosjekt-->Windows-skrivebord--> statisk bibliotek, prosjektnavnet er Libtest
Ny functem.h og functem.cpp
functem.h:
#pragma en gang #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 functem(int a, int b)
{ returnere a + b;
} Deretter genererer du prosjektet, og det vil være to filer, Libtest.lib og Libtest.pdb, i Debug-mappen
Når man ringer, kreves tre trinn:
1. Kopier Libtest.lib og functem.h til katalogen til kalleren; som vist i figuren nedenfor:
2. Legg til #include "functem.h" over den kallende cpp-filen
3. Legg til #pragma kommentar (lib, "Libtest.lib") over den kallende cpp-filen
Som vist i figuren ovenfor, har samtalen vært vellykket.
4. Dynamisk lenkebibliotek-kallmetode: Opprett et nytt prosjekt – > dynamisk lenkebibliotek med prosjektnavnet Dlltest
Opprett en ny Dlltest.h:
#pragma en gang #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)
{ returnere x + y;
} Generer prosjektet, i Debug-katalogen finnes det:
Oppringingsprosess:
1. Kopier Dlltest.dll, Dlltest.lib og Dlltest.h og kopier dem til katalogen til kalleren; som vist i figuren nedenfor:
PS: Her brukes faktisk Dlltest.lib bare når man kompilerer kompilatorlenken, så etter at programmet er generert, kan du ikke inkludere lib-filen, bare dll-filen, og den reelle bruken er faktisk dll-filen. Kort sagt må alle tre filene kopieres, men .h og .lib brukes til å kompilere lenker, og kun .dll må plasseres i den endelig genererte katalogen.
2. Legg #include "Dlltest.h" over den kalte cpp-filen
3. Legg til #pragma kommentar (lib, "Dlltest.lib") over den kallende cpp-filen
Samtalen er vellykket! --------------------- Forfatter: Bird Kilde: CSDN Original: https://blog.csdn.net/wcc27857285/article/details/84615891 Opphavsrettsmerknad: Denne artikkelen er en original artikkel av bloggeren, vennligst legg ved lenken til blogginnlegget for gjenutgivelse!
|