1. Čo je statická knižnica spojenia LIB a čo je dynamická knižnica prepojenia DLL? Statické aj dynamické knižnice zdieľajú kód, obe v binárnom formáte
2. Rozdiel medzi statickou knižnicou linkov LIB a dynamickou knižnicou linkov DLL Ak použijete staticky prepojenú knižnicu, všetky inštrukcie v knižnici sú priamo zahrnuté vo výslednom EXE súbore. Dynamická dynamická knižnica nemusí byť zahrnutá vo finálnom EXE súbore, ktorý môže byť "dynamicky" referencovaný a odstránený pri spustení EXE súboru. Ďalším rozdielom je, že statická knižnica odkazov už nemôže obsahovať iné dynamické alebo statické knižnice prepojení, zatiaľ čo dynamická knižnica môže obsahovať iné dynamické alebo statické knižnice prepojení.
3. Metóda volania statickej knižnice spojov: Prežijme a vygenerujme súbor lib:
VS2017--> Vytvorte nový projekt-->Windows desktop--> statickej knižnice, názov projektu je Libtest
Nové functem.h a functem.cpp
functem.h:
#pragma raz #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)
{ vráť a + b;
} Potom vygenerujte projekt a v adresári Debug budú dva súbory, Libtest.lib a Libtest.pdb
Pri volaní sú potrebné tri kroky:
1. Skopírujte Libtest.lib a functem.h do adresára volajúceho; ako je znázornené na obrázku nižšie:
2. Pridajte #include "functem.h" nad volaný cpp súbor
3. Pridajte #pragma komentár (lib, "Libtest.lib") nad volaný cpp súbor
Ako je znázornené na obrázku vyššie, výzva bola úspešná.
4. Metóda volania dynamickej knižnice odkazov: Vytvorte nový projekt – > dynamickú knižnicu s názvom projektu Dlltest
Vytvorte nový Dlltest.h:
#pragma raz #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)
{ vrátiť x + y;
} Vygenerujte projekt, v adresári Debug sa nachádza:
Proces volania:
1. Skopírujte Dlltest.dll, Dlltest.lib a Dlltest.h a skopírujte ich do adresára volajúceho; ako je znázornené na obrázku nižšie:
PS: Tu sa v skutočnosti Dlltest.lib používa iba pri kompilácii kompilátora, takže po vygenerovaní programu nemôžete zahrnúť lib súbor, iba dll súbor, a skutočným využitím je dll súbor. Stručne povedané, všetky tri súbory je potrebné skopírovať, ale na kompiláciu odkazov sa používajú .h a .lib a do finálneho vygenerovaného adresára je potrebné umiestniť len .dll.
2. Pridajte #include "Dlltest.h" nad volaný cpp súbor
3. Pridajte #pragma komentár (lib, "Dlltest.lib") nad volajúci cpp súbor
Volanie je úspešné! --------------------- Autor: Bird Zdroj: CSDN Originál: https://blog.csdn.net/wcc27857285/article/details/84615891 Upozornenie na autorské práva: Tento článok je originálny článok od blogera, prosím, pripojte odkaz na blogový príspevok na opätovné zverejnenie!
|