1. Wat is een statische verbindingsbibliotheek (LIB) en wat is een dynamische linkbibliotheek (DLL)? Zowel statische als dynamische linkbibliotheken delen code, beide in binair formaat
2. Het verschil tussen statische linkbibliotheek LIB en dynamische linkbibliotheek DLL Als je een statisch gekoppelde bibliotheek gebruikt, worden alle instructies in de bibliotheek direct opgenomen in het resulterende EXE-bestand. De dynamische dynamische linkbibliotheek hoeft niet in het uiteindelijke EXE-bestand te worden opgenomen, dat "dynamisch" kan worden verwezen en verwijderd wanneer het EXE-bestand wordt uitgevoerd. Een ander verschil is dat een statische linkbibliotheek geen andere dynamische of statische linkbibliotheken meer kan bevatten, terwijl een dynamische linkbibliotheek andere dynamische of statische linkbibliotheken kan bevatten.
3. Statische link bibliotheek aanroepmethode: Laten we overleven om een lib-bestand te genereren:
VS2017--> Maak een nieuw project aan—>Windows desktop—> statische bibliotheek, de projectnaam is Libtest.
Nieuwe functem.h en functem.cpp
functem.h:
#pragma één keer #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)
{ Geef A + B terug;
} Genereer vervolgens het project, en er zullen twee bestanden zijn, Libtest.lib en Libtest.pdb, in de Debug-map
Bij het bellen zijn drie stappen vereist:
1. Kopieer Libtest.lib en functem.h naar de directory van de aanroeper; zoals weergegeven in de onderstaande figuur:
2. Voeg #include "functem.h" toe boven het aanroepende cpp-bestand
3. Voeg #pragma commentaar (lib, "Libtest.lib") toe boven het aanroepende cpp-bestand
Zoals te zien is in de bovenstaande figuur, is de call succesvol geweest.
4. Dynamische link bibliotheek aanroepmethode: Maak een nieuw project aan - > dynamische linkbibliotheek met de projectnaam Dlltest
Maak een nieuwe Dlltest.h:
#pragma één keer #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;
} Genereer het project, in de Debug-map staat het volgende:
Oproepproces:
1. Kopieer Dlltest.dll, Dlltest.lib en Dlltest.h en kopieer deze naar de directory van de aanroeper; zoals weergegeven in de onderstaande figuur:
PS: Hier wordt Dlltest.lib eigenlijk alleen gebruikt bij het compileren van de compilerlink, dus nadat het programma is gegenereerd, kun je het libbestand niet toevoegen, alleen het dll-bestand, en het echte gebruik is eigenlijk het dll-bestand. Kortom, alle drie de bestanden moeten worden gekopieerd, maar .h en .lib worden gebruikt om links te compileren en alleen .dll hoeven in de uiteindelijk gegenereerde map te worden geplaatst.
2. Voeg #include "Dlltest.h" toe boven het aangeroepen cpp-bestand
3. Voeg #pragma commentaar (lib, "Dlltest.lib") toe boven het aanroepende cpp-bestand
De oproep is geslaagd! --------------------- Auteur: Bird Bron: CSDN Origineel: https://blog.csdn.net/wcc27857285/article/details/84615891 Copyright: Dit artikel is een origineel artikel van de blogger, voeg de blogpost link toe voor herdruk!
|