Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 12415|Atbildi: 1

[C] C++ Kopsavilkums par metodēm, kas atsaucas uz Lib un Dll

[Kopēt saiti]
Publicēts 02.07.2019 17:06:54 | | |
1. Kas ir statiskā savienojuma bibliotēka LIB un kas ir dinamisko saišu bibliotēkas DLL?     
Gan statisko, gan dinamisko saišu bibliotēkas koplieto kodu binārā formātā



2. Atšķirība starp statisko saišu bibliotēku LIB un dinamisko saišu bibliotēkas DLL
Ja izmantojat statiski saistītu bibliotēku, visas lib instrukcijas tiek tieši iekļautas iegūtajā EXE failā. Dinamisko dinamisko saišu bibliotēka nav jāiekļauj galīgajā EXE failā, uz kuru var "dinamiski" atsaukties un izlādēt, kad tiek izpildīts EXE fails. Vēl viena atšķirība ir tāda, ka statisko saišu bibliotēkā vairs nevar būt citas dinamiskās vai statiskās saišu bibliotēkas, savukārt dinamisko saišu bibliotēkā var būt citas dinamisko vai statisko saišu bibliotēkas.



3. Statisko saišu bibliotēkas izsaukuma metode:
Izdzīvosim, lai ģenerētu lib failu:

VS2017--> Izveidojiet jaunu projektu -->windows darbvirsma--> statisko bibliotēku, projekta nosaukums ir Libtest



Jauns functem.h un functem.cpp

functem.h:

#pragma vienu reizi
#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)
{
        atgriezt a + b;
}
Pēc tam ģenerējiet projektu, un atkļūdošanas direktorijā būs divi faili - Libtest.lib un Libtest.pdb

Zvanot ir nepieciešamas trīs darbības:

1. Kopējiet Libtest.lib un functem.h zvanītāja direktorijā; kā parādīts zemāk redzamajā attēlā:



2. Pievienojiet #include "functem.h" virs izsaucamā cpp faila

3. Pievienojiet #pragma komentāru (lib, "Libtest.lib") virs izsaucamā cpp faila



Kā parādīts attēlā iepriekš, zvans ir bijis veiksmīgs.



4. Dinamisko saišu bibliotēkas izsaukuma metode:
Izveidojiet jaunu projektu - > dinamisko saišu bibliotēku ar projekta nosaukumu Dlltest

Izveidojiet jaunu Dlltest.h:

#pragma vienu reizi
#ifndef __CDLL_H__
#define __CDLL_H__
ārējais "C" int _declspec(dllexport) add(int x, int y);
#endif
Dlltest.cpp:

#include "stdafx.h"
#include "Dlltest.h"
int add(int x, int y)
{
        atgriešanās x + y;
}
Ģenerējiet projektu, atkļūdošanas direktorijā ir:



Zvanīšanas process:

1. Kopējiet Dlltest.dll, Dlltest.lib un Dlltest.h un nokopējiet tos zvanītāja direktorijā; kā parādīts attēlā zemāk:



PS: Šeit patiesībā Dlltest.lib tiek izmantots tikai, kompilējot kompilatora saiti, tāpēc pēc programmas ģenerēšanas jūs nevarat iekļaut lib failu, tikai dll failu, un reālais lietojums faktiski ir dll fails. Īsāk sakot, visi trīs faili ir jākopē, bet .h un .lib tiek izmantoti saišu kompilēšanai, un tikai .dll ir jāievieto galīgajā ģenerētajā direktorijā.

2. Pievienojiet #include "Dlltest.h" virs izsauktā cpp faila

3. Pievienojiet #pragma komentāru (lib, "Dlltest.lib") virs izsaucamā cpp faila



Zvans ir veiksmīgs!
---------------------
Autors: Putns
Avots: CSDN
Oriģināls: https://blog.csdn.net/wcc27857285/article/details/84615891
Paziņojums par autortiesībām: Šis raksts ir oriģināls emuāru autora raksts, lūdzu, pievienojiet emuāra ziņas saiti atkārtotai izdrukāšanai!





Iepriekšējo:1. Izveidojiet jaunāko mācību programmu
Nākamo:MFC LPSTR tipa rakstīšana
Publicēts 16.12.2023 13:10:26 |
Uzvedne:Autori tiek aizliegti vai noņemtais saturs tiek automātiski bloķēts
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com