Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 12415|Svar: 1

[C] C++ Sammanfattning av metoder som refererar till Lib och Dll

[Kopiera länk]
Publicerad på 2019-07-02 17:06:54 | | |
1. Vad är ett statiskt anslutningsbibliotek (LIB) och vad är ett dynamiskt länkbibliotek DLL?     
Både statiska och dynamiska länkbibliotek delar kod, båda i binärt format



2. Skillnaden mellan statiskt länkbibliotek LIB och dynamiskt länkbibliotek DLL
Om du använder ett statiskt länkat bibliotek inkluderas alla instruktioner i biblioteket direkt i den resulterande EXE-filen. Det dynamiska länkbiblioteket behöver inte inkluderas i den slutliga EXE-filen, som kan refereras till och avlastas "dynamiskt" när EXE-filen körs. En annan skillnad är att ett statiskt länkbibliotek inte längre kan innehålla andra dynamiska eller statiska länkbibliotek, medan ett dynamiskt länkbibliotek kan innehålla andra dynamiska eller statiska länkbibliotek.



3. Statisk länkbiblioteksanropsmetod:
Låt oss överleva för att generera en lib-fil:

VS2017--> Skapa ett nytt projekt-->Windows-skrivbord--> statiskt bibliotek, projektnamnet är Libtest



Ny functem.h och functem.cpp

functem.h:

#pragma en gång
#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 funktem(int a, int b)
{
        återlämna a + b;
}
Generera sedan projektet, och det kommer att finnas två filer, Libtest.lib och Libtest.pdb, i Debug-katalogen

När man ringer krävs tre steg:

1. Kopiera Libtest.lib och functem.h till anroparens katalog; som visas i figuren nedan:



2. Lägg till #include "functem.h" ovanför den anropande cpp-filen

3. Lägg till #pragma kommentar (lib, "Libtest.lib") ovanför den anropande cpp-filen



Som visas i figuren ovan har anropet varit framgångsrikt.



4. Dynamisk länkbiblioteksanropsmetod:
Skapa ett nytt projekt – > dynamiskt länkbibliotek med projektnamnet Dlltest

Skapa en ny Dlltest.h:

#pragma en gång
#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)
{
        returnera x + y;
}
Generera projektet, i Debug-katalogen finns:



Samtalsprocessen:

1. Kopiera Dlltest.dll, Dlltest.lib och Dlltest.h och kopiera dem till anroparens katalog; som visas i figuren nedan:



PS: Här används faktiskt Dlltest.lib endast vid kompilering av kompilatorlänken, så efter att programmet genererats kan du inte inkludera lib-filen, bara dll-filen, och den verkliga användningen är faktiskt dll-filen. Kort sagt måste alla tre filer kopieras, men .h och .lib används för att kompilera länkar, och endast .dll behöver placeras i den slutliga genererade katalogen.

2. Lägg till #include "Dlltest.h" ovanför den anropade cpp-filen

3. Lägg till #pragma kommentar (lib, "Dlltest.lib") ovanför den anropande cpp-filen



Samtalet är framgångsrikt!
---------------------
Författare: Bird
Källa: CSDN
Original: https://blog.csdn.net/wcc27857285/article/details/84615891
Upphovsrättsmeddelande: Denna artikel är en originalartikel av bloggaren, vänligen bifoga länken till blogginlägget för återpublicering!





Föregående:1. Bygg det senaste kursmaterialet
Nästa:MFC:s LPSTR-typsnitt
Publicerad på 2023-12-16 13:10:26 |
Snabb:Författare är bannlysta eller borttaget innehåll blockeras automatiskt
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com