1. Mikä on staattinen yhteyskirjasto LIB ja mikä on dynaaminen linkkikirjasto DLL? Sekä staattiset että dynaamiset linkkikirjastot jakavat koodia, molemmat binäärimuodossa
2. Ero staattisen linkkikirjaston LIB:n ja dynaamisen linkkikirjaston DLL:n välillä Jos käytät staattisesti linkitettyä kirjastoa, kaikki libin käskyt sisältyvät suoraan tuloksena olevaan EXE-tiedostoon. Dynaamista dynaamista linkkikirjastoa ei tarvitse sisällyttää lopulliseen EXE-tiedostoon, joka voidaan "dynaamisesti" viitata ja purkaa, kun EXE-tiedosto suoritetaan. Toinen ero on, että staattinen linkkikirjasto ei enää voi sisältää muita dynaamisia tai staattisia linkkikirjastoja, kun taas dynaaminen linkkikirjasto voi sisältää muita dynaamisia tai staattisia linkkikirjastoja.
3. Staattisen linkkikirjaston kutsumenetelmä: Selviydytään ja luodaan lib-tiedosto:
VS2017--> Luo uusi projekti-->windows-työpöytä-> staattinen kirjasto, projektin nimi on Libtest
Uudet functem.h ja functem.cpp
functem.h:
#pragma kerran #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)
{ return a + b;
} Sitten luo projekti, ja Debug-hakemistossa on kaksi tiedostoa, Libtest.lib ja Libtest.pdb
Soittaessa vaaditaan kolme vaihetta:
1. Kopioi Libtest.lib ja functem.h kutsujan hakemistoon; kuten alla olevassa kuvassa näkyy:
2. Lisää #include "functem.h" kutsuvan cpp-tiedoston yläpuolelle
3. Lisää #pragma kommentti (lib, "Libtest.lib") kutsuvan cpp-tiedoston yläpuolelle
Kuten yllä olevasta kuvasta näkyy, puhelu on onnistunut.
4. Dynaamisen linkkikirjaston kutsumenetelmä: Luo uusi projekti – > dynaaminen linkkikirjasto projektin nimellä Dlltest
Luo uusi Dlltest.h:
#pragma kerran #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;
} Luo projekti, Debug-hakemistossa on:
Kutsuprosessi:
1. Kopioi Dlltest.dll, Dlltest.lib ja Dlltest.h ja kopioi ne soittajan hakemistoon; kuten alla olevassa kuvassa näkyy:
PS: Tässä Dlltest.libiä käytetään itse asiassa vain kääntäjälinkin kääntämisessä, joten ohjelman generoinnin jälkeen et voi lisätä lib-tiedostoa, vaan vain dll-tiedoston, ja todellinen käyttö on itse asiassa dll-tiedosto. Lyhyesti sanottuna kaikki kolme tiedostoa täytyy kopioida, mutta linkkien kääntämiseen käytetään .h ja .lib, ja vain .dll tiedosto on sijoitettava lopulliseen generoituun hakemistoon.
2. Lisää #include "Dlltest.h" kutsutun cpp-tiedoston yläpuolelle
3. Lisää #pragma kommentti (lib, "Dlltest.lib") kutsuvan cpp-tiedoston yläpuolelle
Puhelu onnistui! --------------------- Kirjoittaja: Bird Lähde: CSDN Alkuperäinen: https://blog.csdn.net/wcc27857285/article/details/84615891 Tekijänoikeusilmoitus: Tämä artikkeli on bloggaajan alkuperäinen artikkeli, liitä blogikirjoituksen linkki uudelleenjulkaisua varten!
|