1. Co je to statická knihovna spojení LIB a co je dynamická linková knihovna DLL? Statická i dynamická knihovna sdílejí kód, obě v binárním formátu
2. Rozdíl mezi statickou knihovnou LIB a dynamickou knihovnou DLL Pokud použijete staticky propojenou knihovnu, všechny instrukce v knihovně jsou přímo zahrnuty ve výsledném EXE souboru. Dynamická dynamická knihovna nemusí být zahrnuta ve finálním EXE souboru, který lze "dynamicky" odkazovat a načítat při spuštění EXE souboru. Dalším rozdílem je, že statická knihovna spojů již nemůže obsahovat jiné dynamické nebo statické knihovny spojů, zatímco dynamická knihovna může obsahovat jiné dynamické nebo statické knihovny spojů.
3. Metoda volání statické knihovny spojů: Přežijeme a vygenerujme soubor lib:
VS2017--> Vytvořte nový projekt-->Windows desktop--> statické knihovně, název projektu je Libtest
Nový funktem.h a functem.cpp
functem.h:
#pragma jednou #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 funkctem (int a, int b)
{ vraťte a + b;
} Pak vygenerujte projekt a v adresáři Debug budou dva soubory, Libtest.lib a Libtest.pdb
Při volání jsou vyžadovány tři kroky:
1. Zkopírovat Libtest.lib a functem.h do adresáře volajícího; jak je znázorněno na obrázku níže:
2. Přidejte #include "functem.h" nad volaný cpp soubor
3. Přidejte #pragma komentář (lib, "Libtest.lib") nad volající cpp soubor
Jak je znázorněno na obrázku výše, výzva byla úspěšná.
4. Metoda volání dynamické knihovny odkazů: Vytvořte nový projekt – > dynamickou knihovnu odkazů s názvem projektu Dlltest
Vytvořte nový Dlltest.h:
#pragma jednou #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átit x + y;
} Vygenerujte projekt, v adresáři Debug je:
Proces hovoru:
1. Zkopírovat Dlltest.dll, Dlltest.lib a Dlltest.h a zkopírovat je do adresáře volajícího; jak je znázorněno na obrázku níže:
PS: Zde se ve skutečnosti Dlltest.lib používá pouze při kompilaci kompilátorového odkazu, takže po vygenerování programu nemůžete zahrnout soubor lib, pouze soubor dll, a skutečné využití je vlastně soubor dll. Stručně řečeno, všechny tři soubory je třeba zkopírovat, ale k kompilaci odkazů se používají .h a .lib a do finálního generovaného adresáře je třeba umístit pouze .dll.
2. Přidejte #include "Dlltest.h" nad volaný cpp soubor
3. Přidejte #pragma komentář (lib, "Dlltest.lib") nad volaný cpp soubor
Hovor je úspěšný! --------------------- Autor: Bird Zdroj: CSDN Originál: https://blog.csdn.net/wcc27857285/article/details/84615891 Oznámení o autorských právech: Tento článek je originálním článkem od blogera, prosím připojte odkaz na blogový příspěvek pro přetisk!
|