Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 12415|Svar: 1

[C] C++ Resumé af metoder, der refererer til Lib og Dll

[Kopier link]
Opslået på 02/07/2019 17.06.54 | | |
1. Hvad er et statisk forbindelsesbibliotek LIB, og hvad er et dynamisk linkbibliotek DLL?     
Både statiske og dynamiske linkbiblioteker deler kode, begge i binært format



2. Forskellen mellem statisk linkbibliotek LIB og dynamisk linkbibliotek DLL
Hvis du bruger et statisk linket bibliotek, er alle instruktioner i biblioteket direkte inkluderet i den resulterende EXE-fil. Det dynamiske dynamiske linkbibliotek behøver ikke at være inkluderet i den endelige EXE-fil, som kan refereres til og aflæses dynamisk, når EXE-filen eksekveres. En anden forskel er, at et statisk linkbibliotek ikke længere kan indeholde andre dynamiske eller statiske linkbiblioteker, mens et dynamisk linkbibliotek kan indeholde andre dynamiske eller statiske linkbiblioteker.



3. Statisk linkbibliotek-kaldsmetode:
Lad os overleve for at generere en lib-fil:

VS2017--> Opret et nyt projekt-->Windows desktop--> statisk bibliotek, projektnavnet er Libtest



Ny functem.h og functem.cpp

functem.h:

#pragma én 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 Funktem (Int A, Int B)
{
        returner a + b;
}
Generer derefter projektet, og der vil være to filer, Libtest.lib og Libtest.pdb, i Debug-mappen

Når man ringer, kræves tre trin:

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



2. Tilføj #include "functem.h" over den kaldende cpp-fil

3. Tilføj #pragma kommentar (lib, "Libtest.lib") over den kaldende cpp-fil



Som vist i figuren ovenfor har kaldet været en succes.



4. Dynamisk linkbibliotekskaldsmetode:
Opret et nyt projekt - > dynamisk linkbibliotek med projektnavnet Dlltest

Opret en ny Dlltest.h:

#pragma én 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)
{
        returner x + y;
}
Generer projektet, i Debug-mappen er der:



Opkaldsproces:

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



PS: Her bruges Dlltest.lib faktisk kun, når man kompilerer compiler-linket, så efter programmet er genereret, kan du ikke inkludere lib-filen, kun dll-filen, og den reelle anvendelse er faktisk dll-filen. Kort sagt skal alle tre filer kopieres, men .h og .lib bruges til at kompilere links, og kun .dll skal placeres i den endelige genererede mappe.

2. Tilføj #include "Dlltest.h" over den kaldte cpp-fil

3. Tilføj #pragma kommentar (lib, "Dlltest.lib") over den kaldende cpp-fil



Opkaldet lykkedes!
---------------------
Forfatter: Bird
Kilde: CSDN
Oprindelig: https://blog.csdn.net/wcc27857285/article/details/84615891
Ophavsretsmeddelelse: Denne artikel er en original artikel af bloggeren, vedhæft venligst bloglinket til genoptryk!





Tidligere:1. Byg det nyeste kursusmateriale
Næste:MFC's LPSTR-skriftskrivning
Opslået på 16/12/2023 13.10.26 |
Lynhurtig:Forfattere bliver udelukket eller fjernet indhold blokeres automatisk
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com