Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 12415|Válasz: 1

[C] C++ A Lib-re és Dll-re hivatkozó módszerek összefoglalója

[Linket másol]
Közzétéve 2019. 07. 02. 17:06:54 | | |
1. Mi az a statikus kapcsolati könyvtár LIB, és mi a dinamikus link könyvtár DLL?     
Mind a statikus és a dinamikus link könyvtárak osztanak kódot, mindkettő bináris formátumban



2. A különbség a statikus link könyvtár LIB és a dinamikus link könyvtár DLL között
Ha statikus módon összekapcsolt könyvtárat használsz, a libben lévő összes utasítás közvetlenül az eredményes EXE fájlba kerül. A dinamikus dinamikus link könyvtárat nem kell beépíteni a végső EXE fájlba, amely "dinamikusan" hivatkozható és kitöltődik az EXE fájl futtatásakor. Egy másik különbség, hogy egy statikus link könyvtár már nem tartalmazhat más dinamikus vagy statikus linkkönyvtárat, míg egy dinamikus link könyvtár más dinamikus vagy statikus link könyvtárakat is tartalmazhat.



3. Statikus link könyvtár hívási módszer:
Éljük túl, hogy létrehozzunk egy lib-fájlt:

VS2017--> Hozz létre új projektet-->windows asztali-> statikus könyvtár, a projekt neve Libtest



Új functem.h és functem.cpp

functem.h:

#pragma egyszer
#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;
}
Ezután generáljuk a projektet, és két fájl lesz: Libtest.lib és Libtest.pdb a Debug könyvtárban

Híváskor három lépés szükséges:

1. Másoljuk a Libtest.lib és functem.h fájlokat a hívó könyvtárába; ahogy az alábbi ábrán látható:



2. Hozzáadni #include "functem.h" betűt a hívó cpp fájl fölé

3. Hozzáfűzni #pragma kommentet (lib, "Libtest.lib") a hívó cpp fájl fölé



Ahogy a fenti ábrán látható, a hívás sikeres volt.



4. Dinamikus link könyvtár hívási módszer:
Hozz létre egy új projektet – > dinamikus link könyvtárat a projekt neve: Dlltest

Hozz létre egy új Dlltest.h fájlt:

#pragma egyszer
#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;
}
Generáld a projektet, a Debug könyvtárban található:



Hívási folyamat:

1. Másold le Dlltest.dll, Dlltest.lib és Dlltest.h fájlokat, és másold be a hívó könyvtárába; ahogy az alábbi ábrán látható:



Ui.: Itt valójában a Dlltest.lib csak a fordító link fordításához használatos, így a program generálása után nem lehet a lib fájlt hozzáadni, csak a dll fájlt, és a valódi felhasználás valójában a dll fájl. Röviden, mindhárom fájlt másolni kell, de a .h és .lib fájlokat a linkek fordításához használják, és csak .dll fájlt kell a végleges generált könyvtárba helyezni.

2. Hozzáadni #include "Dlltest.h" fájlt a hívott cpp fájl fölé

3. Hozzáadj #pragma kommentet (lib, "Dlltest.lib") a hívó cpp fájl fölé



A hívás sikeres!
---------------------
Szerző: Bird
Forrás: CSDN
Eredeti: https://blog.csdn.net/wcc27857285/article/details/84615891
Szerzői jogi értesítés: Ez a cikk a blogger eredeti cikke, kérjük, csatolja a blogbejegyzés linkjét újranyomáshoz!





Előző:1. Készítsd el a legújabb tananyagot
Következő:Az MFC LPSTR betűs írása
Közzétéve 2023. 12. 16. 13:10:26 |
Haladéktalan:A szerzőket kitiltják vagy eltávolítják, a tartalmak automatikusan blokkolódnak
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com