1. Kas yra statinio ryšio biblioteka LIB ir kas yra dinaminių nuorodų bibliotekos DLL? Tiek statinių, tiek dinaminių nuorodų bibliotekos dalijasi kodu dvejetainiu formatu
2. Skirtumas tarp statinių nuorodų bibliotekos LIB ir dinaminių nuorodų bibliotekos DLL Jei naudojate statiškai susietą biblioteką, visos lib instrukcijos yra tiesiogiai įtrauktos į gautą EXE failą. Dinaminių dinaminių saitų biblioteka neprivalo būti įtraukta į galutinį EXE failą, kurį galima "dinamiškai" nurodyti ir iškrauti, kai vykdomas EXE failas. Kitas skirtumas yra tas, kad statinių nuorodų bibliotekoje nebegali būti kitų dinaminių ar statinių saitų bibliotekų, o dinaminių nuorodų bibliotekoje gali būti kitų dinaminių arba statinių saitų bibliotekų.
3. Statinių nuorodų bibliotekos iškvietimo metodas: Išgyvenkime, kad sugeneruotume lib failą:
VS2017--> Sukurkite naują projektą-->windows desktop--> statinę biblioteką, projekto pavadinimas yra Libtest
Naujas functem.h ir functem.cpp
functem.h:
#pragma vieną kartą #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 funkcija (int a, int b)
{ grąžinti a + b;
} Tada sugeneruokite projektą, o derinimo kataloge bus du failai – Libtest.lib ir Libtest.pdb
Skambinant reikia atlikti tris veiksmus:
1. Nukopijuokite Libtest.lib ir functem.h į skambinančiojo katalogą; kaip parodyta paveikslėlyje žemiau:
2. Pridėkite #include "functem.h" virš skambinančio cpp failo
3. Pridėkite #pragma komentarą (lib, "Libtest.lib") virš skambinančio cpp failo
Kaip parodyta aukščiau esančiame paveikslėlyje, skambutis buvo sėkmingas.
4. Dinaminių nuorodų bibliotekos iškvietimo metodas: Sukurkite naują projektą - > dinaminių nuorodų biblioteką su projekto pavadinimu Dlltest
Sukurkite naują Dlltest.h:
#pragma vieną kartą #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)
{ grąža x + y;
} Sugeneruokite projektą, derinimo kataloge yra:
Skambinimo procesas:
1. Nukopijuokite Dlltest.dll, Dlltest.lib ir Dlltest.h ir nukopijuokite juos į skambinančiojo katalogą; kaip parodyta paveikslėlyje žemiau:
PS: Čia iš tikrųjų Dlltest.lib naudojamas tik kompiliuojant kompiliatoriaus nuorodą, todėl sugeneravus programą negalima įtraukti lib failo, tik dll failo, o tikrasis naudojimas iš tikrųjų yra dll failas. Trumpai tariant, visus tris failus reikia nukopijuoti, tačiau .h ir .lib naudojami nuorodoms kompiliuoti, ir tik .dll reikia įdėti į galutinį sugeneruotą katalogą.
2. Pridėkite #include "Dlltest.h" virš vadinamo cpp failo
3. Pridėkite #pragma komentarą (lib, "Dlltest.lib") virš skambinančio cpp failo
Skambutis sėkmingas! --------------------- Autorius: Paukštis Šaltinis: CSDN Originalas: https://blog.csdn.net/wcc27857285/article/details/84615891 Autorių teisių pranešimas: Šis straipsnis yra originalus straipsnis Bloggers, prašome pridėti dienoraščio įrašo nuorodą perspausdinti!
|