Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 12415|Vastaus: 1

[C] C++ Yhteenveto menetelmistä, jotka viittaavat Lib- ja Dll-metodeihin

[Kopioi linkki]
Julkaistu 2.7.2019 17.06.54 | | |
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!





Edellinen:1. Rakenna uusimmat kurssimateriaalit
Seuraava:MFC:n LPSTR-tyyppikirjoitus
Julkaistu 16.12.2023 13.10.26 |
Ripeä:Tekijät bannataan tai poistetaan, sisältö estetään automaattisesti
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com