1. Mi az a statikus kapcsolati könyvtár LIB, és mi a dinamikus link könyvtár DLL? Mind a statikus és a dinamikus link könyvtárak osztanak kódot, mindkettő bináris formátumban
2. A különbség a statikus link könyvtár LIB és a dinamikus link könyvtár DLL között Ha statikus módon összekapcsolt könyvtárat használsz, a libben lévő összes utasítás közvetlenül az eredményes EXE fájlba kerül. A dinamikus dinamikus link könyvtárat nem kell beépíteni a végső EXE fájlba, amely "dinamikusan" hivatkozható és kitöltődik az EXE fájl futtatásakor. Egy másik különbség, hogy egy statikus link könyvtár már nem tartalmazhat más dinamikus vagy statikus linkkönyvtárat, míg egy dinamikus link könyvtár más dinamikus vagy statikus link könyvtárakat is tartalmazhat.
3. Statikus link könyvtár hívási módszer: Éljük túl, hogy létrehozzunk egy lib-fájlt:
VS2017--> Hozz létre új projektet-->windows asztali-> statikus könyvtár, a projekt neve Libtest
Új functem.h és functem.cpp
functem.h:
#pragma egyszer #include "stdafx.h" #ifndef _functem_H #define _functem_H int functem(int a, int b); #endif
functem.cpp:
#include "functem.h" #include "stdafx.h"
int functem (int A, int b)
{ return a + b;
} Ezután generáljuk a projektet, és két fájl lesz: Libtest.lib és Libtest.pdb a Debug könyvtárban
Híváskor három lépés szükséges:
1. Másoljuk a Libtest.lib és functem.h fájlokat a hívó könyvtárába; ahogy az alábbi ábrán látható:
2. Hozzáadni #include "functem.h" betűt a hívó cpp fájl fölé
3. Hozzáfűzni #pragma kommentet (lib, "Libtest.lib") a hívó cpp fájl fölé
Ahogy a fenti ábrán látható, a hívás sikeres volt.
4. Dinamikus link könyvtár hívási módszer: Hozz létre egy új projektet – > dinamikus link könyvtárat a projekt neve: Dlltest
Hozz létre egy új Dlltest.h fájlt:
#pragma egyszer #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)
{ return x + y;
} Generáld a projektet, a Debug könyvtárban található:
Hívási folyamat:
1. Másold le Dlltest.dll, Dlltest.lib és Dlltest.h fájlokat, és másold be a hívó könyvtárába; ahogy az alábbi ábrán látható:
Ui.: Itt valójában a Dlltest.lib csak a fordító link fordításához használatos, így a program generálása után nem lehet a lib fájlt hozzáadni, csak a dll fájlt, és a valódi felhasználás valójában a dll fájl. Röviden, mindhárom fájlt másolni kell, de a .h és .lib fájlokat a linkek fordításához használják, és csak .dll fájlt kell a végleges generált könyvtárba helyezni.
2. Hozzáadni #include "Dlltest.h" fájlt a hívott cpp fájl fölé
3. Hozzáadj #pragma kommentet (lib, "Dlltest.lib") a hívó cpp fájl fölé
A hívás sikeres! --------------------- Szerző: Bird Forrás: CSDN Eredeti: https://blog.csdn.net/wcc27857285/article/details/84615891 Szerzői jogi értesítés: Ez a cikk a blogger eredeti cikke, kérjük, csatolja a blogbejegyzés linkjét újranyomáshoz!
|