See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 12415|Vastuse: 1

[C] C++ meetodite kokkuvõte, mis viitavad Libile ja Dll-ile

[Kopeeri link]
Postitatud 02.07.2019 17:06:54 | | |
1. Mis on staatilise ühenduse teegi LIB ja mis on dünaamilise lingi teegi DLL?     
Nii staatilised kui ka dünaamilised lingiteegid jagavad koodi, mõlemad binaarses formaadis



2. Erinevus staatilise lingiteegi LIB-i ja dünaamilise lingiteegi DLL-i vahel
Kui kasutad staatiliselt lingitud teeki, lisatakse kõik libis olevad juhised otse tulemuseks olevasse EXE faili. Dünaamilise dünaamilise lingi teeki ei pea olema lõplikus EXE-failis, mida saab "dünaamiliselt" viidata ja maha laadida, kui EXE fail käivitatakse. Teine erinevus on see, et staatiline lingikogu ei saa enam sisaldada teisi dünaamilisi ega staatilisi lingiteeke, samas kui dünaamiline lingiraamatukogu võib sisaldada teisi dünaamilisi või staatilisi lingiteeke.



3. Staatilise lingiteegi kõne meetod:
Jääme ellu, et genereerida lib-fail:

VS2017--> Loo uus projekt-->windows desktop-> staatiline raamatukogu, projekti nimi on Libtest



Uus functem.h ja functem.cpp

functem.h:

#pragma kord
#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)
{
        tagasta a + b;
}
Seejärel genereeri projekt ja Debug kataloogis on kaks faili, Libtest.lib ja Libtest.pdb

Helistamisel on vaja kolme sammu:

1. Kopeeri Libtest.lib ja functem.h kutsuja kataloogi; nagu alloleval joonisel näidatud:



2. Lisa #include "functem.h" kutsuva CPP faili kohale

3. Lisa #pragma kommentaar (lib, "Libtest.lib") kutsuva cpp faili kohale



Nagu ülaloleval joonisel näha, on kõne õnnestunud.



4. Dünaamilise lingiraamatukogu kõne meetod:
Loo uus projekt – > dünaamiline lingide teek projekti nimega Dlltest

Loo uus Dlltest.h:

#pragma kord
#ifndef __CDLL_H__
#define __CDLL_H__
ekstern "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;
}
Genereeri projekt, Debug kaustas on:



Helistamisprotsess:

1. Kopeeri Dlltest.dll, Dlltest.lib ja Dlltest.h ning kopeeri need helistaja kataloogi; nagu alloleval joonisel näidatud:



PS: Siin kasutatakse tegelikult Dlltest.lib-i ainult kompilaatori lingi kompileerimisel, nii et pärast programmi genereerimist ei saa lib-faili lisada, vaid ainult dll-faili, ja tegelik kasutus on tegelikult dll-fail. Lühidalt öeldes tuleb kõik kolm faili kopeerida, kuid linkide kompileerimiseks kasutatakse .h ja .lib ning lõplikku genereeritud kausta tuleb paigutada ainult .dll.

2. Lisa #include "Dlltest.h" kutsutud cpp-faili kohale

3. Lisa #pragma kommentaar (lib, "Dlltest.lib") kutsuva cpp faili kohale



Kõne õnnestus!
---------------------
Autor: Bird
Allikas: CSDN
Originaal: https://blog.csdn.net/wcc27857285/article/details/84615891
Autoriõiguse teade: See artikkel on blogija originaalartikkel, palun lisa blogipostituse link kordustrükkimiseks!





Eelmine:1. Loo uusim kursusematerjal
Järgmine:MFC LPSTR-tüüpi kirjutamine
Postitatud 16.12.2023 13:10:26 |
Kiire:Autorid keelatakse või eemaldatakse sisu automaatselt blokeeritakse
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com