1. Kaj je statična knjižnica povezav LIB in kaj je dinamična knjižnica povezav DLL? Tako statična kot dinamična knjižnica povezav si delita kodo, obe v binarni obliki
2. Razlika med statično knjižnico povezav LIB in dinamično knjižnico povezav DLL Če uporabljate statično povezano knjižnico, so vsa navodila v knjižici neposredno vključena v končno EXE datoteko. Dinamična knjižnica dinamičnih povezav ni nujno vključena v končno EXE datoteko, ki jo je mogoče "dinamično" referencirati in odstraniti ob izvajanju EXE datoteke. Druga razlika je, da statična knjižnica povezav ne more več vsebovati drugih dinamičnih ali statičnih knjižnic povezav, medtem ko lahko knjižnica dinamičnih povezav vsebuje druge dinamične ali statične knjižnice povezav.
3. Metoda klica statične knjižnice povezav: Preživimo in ustvarimo datoteko lib:
VS2017--> Ustvarite nov projekt-->Windows namizje--> statično knjižnico, ime projekta je Libtest
Novi functem.h in functem.cpp
functem.h:
#pragma enkrat #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)
{ vrni a + b;
} Nato generiraj projekt in v mapi Debug bosta dve datoteki, Libtest.lib in Libtest.pdb
Pri klicu so potrebni trije koraki:
1. Kopirajte Libtest.lib in functem.h v imenik klicatelja; kot je prikazano na spodnji sliki:
2. Dodajte #include "functem.h" nad klicno cpp datoteko
3. Dodajte #pragma komentar (lib, "Libtest.lib") nad klicano cpp datoteko
Kot je prikazano na zgornji sliki, je bil klic uspešen.
4. Metoda klica dinamične knjižnice povezav: Ustvarite nov projekt - > dinamično knjižnico povezav z imenom projekta Dlltest
Ustvarite nov Dlltest.h:
#pragma enkrat #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)
{ vrni x + y;
} Generiraj projekt, v mapi Debug je:
Postopek klicanja:
1. Kopirajte Dlltest.dll, Dlltest.lib in Dlltest.h ter jih kopirajte v imenik klicatelja; kot je prikazano na spodnji sliki:
PS: Tukaj se Dlltest.lib dejansko uporablja samo pri prevajanju povezave do prevajalnika, tako da po generiranju programa ne moreš vključiti lib datoteke, ampak samo dll datoteko, in prava uporaba je dll datoteka. Skratka, vse tri datoteke je treba kopirati, vendar se za prevajanje povezav uporabljata .h in .lib, v končno generirano mapo pa je treba vstaviti le .dll.
2. Dodajte #include "Dlltest.h" nad klicano cpp datoteko
3. Dodajte #pragma komentar (lib, "Dlltest.lib") nad klicajočo cpp datoteko
Klic je uspešen! --------------------- Avtor: Bird Vir: CSDN Izvirnik: https://blog.csdn.net/wcc27857285/article/details/84615891 Obvestilo o avtorskih pravicah: Ta članek je izvirni članek blogerja, prosimo, priložite povezavo do blog objave za ponatisnitev!
|