Utilizarea unei biblioteci DLL – Dynamic Link Library in C++ sub Visual Studio 2008

1 comment - This post in english

Utilizarea elementelor de programare incluse in biblioteci DLL [...] se realizeaza in aplicatii C++ cu respectarea anumitor reguli precizate mai jos.
Pentru a utiliza o biblioteca DLL in limbajul de programare C++ sub mediul de programare Visual Studio, se procedeaza astfel:

  • Crearea unui proiect C++ de tip Console application;
  • Definirea continutului pentru fisierul sursa care utilizeaza elemente incluse in biblioteca DLL;
  • Crearea fisierului executabil.


Crearea unui proiect C++ pentru dezvoltarea unei fisier DLL presupune:

  • Lansarea in executie a mediului de programare Visual Studio 2008;
  • Crearea unui proiect nou prin lansarea comenzii File/New/Project…;
  • Selectarea tipului de proiect Visual C++/Win32;
  • Selectarea sablonului de proiect din zona Templates ca Win32 Console Application;
  • Atribuirea denumirii proiectului in controlul Name si a denumirii de solutie in controlul Solution Name; proiectul va fi inclus ca subdirector al solutiei Visual Studio 2008;
  • Apasarea butonului OK lanseaza in executie aplicatia Win32 Application Wizard in care se selecteaza Application Settings;
  • In Application type se activeaza controlul radio Console application, iar in Additional options se activeaza controlul Empty project;
  • Crearea proiectului se incheie prin apasarea butonului Finish.

Definirea continutului pentru fisierul aplicatie C++ consta in:

  • Crearea fisierului header, extensia .h;
  • Precizarea continutului pentru fisierul DLL cu specificarea modificatorului de import dintr-un fisier DLL;
  • Crearea fisierului sursa C++ pentru utilizarea/apelul elementelor precizate in fisierul header;
  • Implementarea functionalitatilor aplicatiei in fisierul sursa C++;
  • Specificarea bibliotecii DLL utilizata pentru dezvoltarea aplicatiei C++.

Crearea fisierului header in cadrul proiectului C++ definit presupune:

  • Activare meniu contextual asociat proiectului prin clic dreapta pe denumirea proiectului in cadrul ferestrei Solution Explorer din mediul Visual Studio 2008;
  • Lansare comanda Add/New Item… din meniul contextual asociat proiectului;
  • In caseta de dialog Add New Item se selecteaza Categories cu Visual C++/Code;
  • Din lista de sabloane pusa la dispozitie in Templates se selecteaza Header File (.h);
  • In controlul Name se introduce denumirea fisierului header cu extensia .h;
  • Apasarea butonului Add determina includerea in proiect a unui fisier header, fara a avea insa un continut.

Precizarea continutului pentru fisierul DLL utilizat cu specificarea modificatorului de import dintr-un fisier DLL se realizeaza in fisierul header si consta in precizarea elementelor componente ale bibliotecii DLL. Pentru cele patru functii implementate la [...], utilizarea acestor functii se realizeaza cu ajutorul modificatorului de import DLL __declspec(dllimport) ce permite importul celor patru functii dintr-un fisier DLL. Fisierul header are urmatorul continut:

__declspec(dllimport) double Adunare(double, double);
__declspec(dllimport) double Scadere(double, double);
__declspec(dllimport) double Inmultire(double, double);
__declspec(dllimport) double Impartire(double, double);

Crearea fisierului sursa C++ in cadrul proiectului definit consta in:

  • Activare meniu contextual asociat proiectului in cadrul ferestrei Solution Explorer din mediul Visual Studio 2008;
  • Lansare comanda Add/New Item… din meniul contextual asociat proiectului;
  • In caseta de dialog Add New Item se selecteaza Categories cu Visual C++/Code;
  • Din lista de sabloane pusa la dispozitie in Templates se selecteaza C++ File (.cpp);
  • In controlul Name se introduce denumirea fisierului cod sursa C++ cu extensia .cpp;
  • Apasarea butonului Add determina includerea in proiect a unui fisier cod sursa C++ fara continut.

Implementarea functionalitatilor pentru aplicatia C++ are loc in fisierul cod sursa C++, cu extensia .cpp, si consta in scrierea codului sursa asociat functionalitatilor proiectate si utilizarea celor patru functii din biblioteca DLL CreareDLLProj obtinuta prin procedura descrisa la [...]. Fisierul sursa C++ are urmatorul continut:

#include "UseDLL.h"
#include <iostream>
 
using namespace std;
 
void main(){
	double x,y;
	x=3.45;
	y=2.63;
	double s=Adunare(x,y);
	cout<<"x+y="<<s<<endl;
	double d=Scadere(x,y);
	cout<<"x-y="<<d<<endl;
	double p=Inmultire(x,y);
	cout<<"x*y="<<p<<endl;
	double r=Impartire(x,y);
	cout<<"x/y="<<r<<endl;
}

Compilarea solutiei C++ in aceste moment genereaza mesaje de eroare intrucat nu sunt cunoscute cele patru functii: Adunare, Scadere, Inmultire si Impartire. Aceste functii pot fi utilizate doar dupa specificarea bibliotecii DLL ce stocheaza functiile.

Specificarea bibliotecii DLL utilizata pentru dezvoltarea aplicatiei C++ consta in:

  • Copierea fisierului cu extensia .lib in subdirectorul solutiei;
  • Copierea bibliotecii DLL, fisierul cu extensia .dll, in subdirectorul Debug al solutiei;
  • Din meniul contextual asociat proiectului se selecteaza Add/Existing Item…;
  • Din caseta de dialog Add Existing Item se selecteaza fisierul cu extensia .lib; apasarea butonul Add determina includerea la nivelul proiectului a fisierului .lib; prin intermediul acestui fisier se acceseaza continutul fisierului cu extensia .dll.

Legatura fisierului sursa cu fisierul header se realizeaza prin directiva #include plasata la inceputul fisierului sursa prezentat in exemplul de mai sus.
Crearea fisierului executabil al aplicatiei se realizeaza prin compilarea solutiei Visual Studio 2008. Lansarea in executie a acestuia se realizeaza din mediul de dezvoltare sau din Windows Explorer.

, , , , , , , , ,