Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 12415|Svare: 1

[C] C++ Sammendrag av metoder som refererer til Lib og Dll

[Kopier lenke]
Publisert på 02.07.2019 17:06:54 | | |
1. Hva er et statisk tilkoblingsbibliotek LIB, og hva er et dynamisk lenkebibliotek DLL?     
Både statiske og dynamiske lenkebiblioteker deler kode, begge i binærformat



2. Forskjellen mellom statisk lenkebibliotek LIB og dynamisk lenkebibliotek DLL
Hvis du bruker et statisk lenket bibliotek, er alle instruksjonene i biblioteket direkte inkludert i den resulterende EXE-filen. Det dynamiske dynamiske lenkebiblioteket trenger ikke å inkluderes i den endelige EXE-filen, som kan «dynamisk» refereres til og tømmes når EXE-filen kjøres. En annen forskjell er at et statisk lenkebibliotek ikke lenger kan inneholde andre dynamiske eller statiske lenkebiblioteker, mens et dynamisk lenkebibliotek kan inneholde andre dynamiske eller statiske lenkebiblioteker.



3. Metoden for statisk lenkebibliotek:
La oss overleve for å generere en lib-fil:

VS2017--> Opprett et nytt prosjekt-->Windows-skrivebord--> statisk bibliotek, prosjektnavnet er Libtest



Ny functem.h og functem.cpp

functem.h:

#pragma en gang
#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 functem(int a, int b)
{
        returnere a + b;
}
Deretter genererer du prosjektet, og det vil være to filer, Libtest.lib og Libtest.pdb, i Debug-mappen

Når man ringer, kreves tre trinn:

1. Kopier Libtest.lib og functem.h til katalogen til kalleren; som vist i figuren nedenfor:



2. Legg til #include "functem.h" over den kallende cpp-filen

3. Legg til #pragma kommentar (lib, "Libtest.lib") over den kallende cpp-filen



Som vist i figuren ovenfor, har samtalen vært vellykket.



4. Dynamisk lenkebibliotek-kallmetode:
Opprett et nytt prosjekt – > dynamisk lenkebibliotek med prosjektnavnet Dlltest

Opprett en ny Dlltest.h:

#pragma en gang
#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)
{
        returnere x + y;
}
Generer prosjektet, i Debug-katalogen finnes det:



Oppringingsprosess:

1. Kopier Dlltest.dll, Dlltest.lib og Dlltest.h og kopier dem til katalogen til kalleren; som vist i figuren nedenfor:



PS: Her brukes faktisk Dlltest.lib bare når man kompilerer kompilatorlenken, så etter at programmet er generert, kan du ikke inkludere lib-filen, bare dll-filen, og den reelle bruken er faktisk dll-filen. Kort sagt må alle tre filene kopieres, men .h og .lib brukes til å kompilere lenker, og kun .dll må plasseres i den endelig genererte katalogen.

2. Legg #include "Dlltest.h" over den kalte cpp-filen

3. Legg til #pragma kommentar (lib, "Dlltest.lib") over den kallende cpp-filen



Samtalen er vellykket!
---------------------
Forfatter: Bird
Kilde: CSDN
Original: https://blog.csdn.net/wcc27857285/article/details/84615891
Opphavsrettsmerknad: Denne artikkelen er en original artikkel av bloggeren, vennligst legg ved lenken til blogginnlegget for gjenutgivelse!





Foregående:1. Bygg det nyeste kursmaterialet
Neste:MFCs LPSTR-skrift
Publisert på 16.12.2023 13:10:26 |
Omgående:Forfattere blir utestengt eller fjernet innhold blokkeres automatisk
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com