1. Hvad er et statisk forbindelsesbibliotek LIB, og hvad er et dynamisk linkbibliotek DLL? Både statiske og dynamiske linkbiblioteker deler kode, begge i binært format
2. Forskellen mellem statisk linkbibliotek LIB og dynamisk linkbibliotek DLL Hvis du bruger et statisk linket bibliotek, er alle instruktioner i biblioteket direkte inkluderet i den resulterende EXE-fil. Det dynamiske dynamiske linkbibliotek behøver ikke at være inkluderet i den endelige EXE-fil, som kan refereres til og aflæses dynamisk, når EXE-filen eksekveres. En anden forskel er, at et statisk linkbibliotek ikke længere kan indeholde andre dynamiske eller statiske linkbiblioteker, mens et dynamisk linkbibliotek kan indeholde andre dynamiske eller statiske linkbiblioteker.
3. Statisk linkbibliotek-kaldsmetode: Lad os overleve for at generere en lib-fil:
VS2017--> Opret et nyt projekt-->Windows desktop--> statisk bibliotek, projektnavnet er Libtest
Ny functem.h og functem.cpp
functem.h:
#pragma én 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 Funktem (Int A, Int B)
{ returner a + b;
} Generer derefter projektet, og der vil være to filer, Libtest.lib og Libtest.pdb, i Debug-mappen
Når man ringer, kræves tre trin:
1. Kopier Libtest.lib og functem.h til kalderens mappe; som vist i figuren nedenfor:
2. Tilføj #include "functem.h" over den kaldende cpp-fil
3. Tilføj #pragma kommentar (lib, "Libtest.lib") over den kaldende cpp-fil
Som vist i figuren ovenfor har kaldet været en succes.
4. Dynamisk linkbibliotekskaldsmetode: Opret et nyt projekt - > dynamisk linkbibliotek med projektnavnet Dlltest
Opret en ny Dlltest.h:
#pragma én 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)
{ returner x + y;
} Generer projektet, i Debug-mappen er der:
Opkaldsproces:
1. Kopier Dlltest.dll, Dlltest.lib og Dlltest.h og kopier dem til opkalderens mappe; som vist i figuren nedenfor:
PS: Her bruges Dlltest.lib faktisk kun, når man kompilerer compiler-linket, så efter programmet er genereret, kan du ikke inkludere lib-filen, kun dll-filen, og den reelle anvendelse er faktisk dll-filen. Kort sagt skal alle tre filer kopieres, men .h og .lib bruges til at kompilere links, og kun .dll skal placeres i den endelige genererede mappe.
2. Tilføj #include "Dlltest.h" over den kaldte cpp-fil
3. Tilføj #pragma kommentar (lib, "Dlltest.lib") over den kaldende cpp-fil
Opkaldet lykkedes! --------------------- Forfatter: Bird Kilde: CSDN Oprindelig: https://blog.csdn.net/wcc27857285/article/details/84615891 Ophavsretsmeddelelse: Denne artikel er en original artikel af bloggeren, vedhæft venligst bloglinket til genoptryk!
|