1. Mis on staatilise ühenduse teegi LIB ja mis on dünaamilise lingi teegi DLL? Nii staatilised kui ka dünaamilised lingiteegid jagavad koodi, mõlemad binaarses formaadis
2. Erinevus staatilise lingiteegi LIB-i ja dünaamilise lingiteegi DLL-i vahel Kui kasutad staatiliselt lingitud teeki, lisatakse kõik libis olevad juhised otse tulemuseks olevasse EXE faili. Dünaamilise dünaamilise lingi teeki ei pea olema lõplikus EXE-failis, mida saab "dünaamiliselt" viidata ja maha laadida, kui EXE fail käivitatakse. Teine erinevus on see, et staatiline lingikogu ei saa enam sisaldada teisi dünaamilisi ega staatilisi lingiteeke, samas kui dünaamiline lingiraamatukogu võib sisaldada teisi dünaamilisi või staatilisi lingiteeke.
3. Staatilise lingiteegi kõne meetod: Jääme ellu, et genereerida lib-fail:
VS2017--> Loo uus projekt-->windows desktop-> staatiline raamatukogu, projekti nimi on Libtest
Uus functem.h ja functem.cpp
functem.h:
#pragma kord #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)
{ tagasta a + b;
} Seejärel genereeri projekt ja Debug kataloogis on kaks faili, Libtest.lib ja Libtest.pdb
Helistamisel on vaja kolme sammu:
1. Kopeeri Libtest.lib ja functem.h kutsuja kataloogi; nagu alloleval joonisel näidatud:
2. Lisa #include "functem.h" kutsuva CPP faili kohale
3. Lisa #pragma kommentaar (lib, "Libtest.lib") kutsuva cpp faili kohale
Nagu ülaloleval joonisel näha, on kõne õnnestunud.
4. Dünaamilise lingiraamatukogu kõne meetod: Loo uus projekt – > dünaamiline lingide teek projekti nimega Dlltest
Loo uus Dlltest.h:
#pragma kord #ifndef __CDLL_H__ #define __CDLL_H__ ekstern "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;
} Genereeri projekt, Debug kaustas on:
Helistamisprotsess:
1. Kopeeri Dlltest.dll, Dlltest.lib ja Dlltest.h ning kopeeri need helistaja kataloogi; nagu alloleval joonisel näidatud:
PS: Siin kasutatakse tegelikult Dlltest.lib-i ainult kompilaatori lingi kompileerimisel, nii et pärast programmi genereerimist ei saa lib-faili lisada, vaid ainult dll-faili, ja tegelik kasutus on tegelikult dll-fail. Lühidalt öeldes tuleb kõik kolm faili kopeerida, kuid linkide kompileerimiseks kasutatakse .h ja .lib ning lõplikku genereeritud kausta tuleb paigutada ainult .dll.
2. Lisa #include "Dlltest.h" kutsutud cpp-faili kohale
3. Lisa #pragma kommentaar (lib, "Dlltest.lib") kutsuva cpp faili kohale
Kõne õnnestus! --------------------- Autor: Bird Allikas: CSDN Originaal: https://blog.csdn.net/wcc27857285/article/details/84615891 Autoriõiguse teade: See artikkel on blogija originaalartikkel, palun lisa blogipostituse link kordustrükkimiseks!
|