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

Utilizarea bibliotecilor DLL asigura productivitate si/sau castig financiar in procesul de dezvoltare software prin reutilizarea de cod sursa C++. Rutinele si/sau componentele de programare incluse intr-o biblioteca DLL sunt doar referite in aplicatii fara a mai fi nevoie reimplementarea lor in aceste aplicatii.


Pentru a construi o biblioteca DLL in limbajul de programare C++ sub mediul de programare Visual Studio, se procedeaza astfel:

  • Crearea unui proiect C++ de tip DLL;
  • Definirea continutului pentru fisierul DLL;
  • Crearea fisierului DLL.

Crearea unui proiect C++ pentru construirea unui fisier DLL presupune:

  • Lansarea in executie a mediului 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 DLL, iar in Additional options se activeaza controlul Empty project;
  • Crearea proiectului se incheie prin apasarea butonului Finish.

Definirea continutului pentru fisierul DLL consta in:

  • Crearea fisierului header, extensia .h;
  • Precizarea continutului pentru fisierul DLL cu specificarea modificatorului de export intr-un fisier DLL;
  • Crearea fisierului sursa C++ pentru construirea elementelor precizate in fisierul header;
  • Implementarea continutului in fisierul sursa C++.

Crearea fisierului header in cadrul proiectului DLL 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 cu specificarea modificatorului de export intr-un fisier DLL se realizeaza in fisierul header si consta in definirea elementelor componente ale bibliotecii DLL. De exemplu, se considera patru functii de implementare a unor operatii aritmetice de baza: adunare, scadere, inmultire si impartire. Definirea acestor functii se realizeaza cu ajutorul modificatorului de export DLL __declspec(dllexport) ce permite exportul celor patru functii intr-un fisier DLL. Fisierul header CreateDLL.h are urmatorul continut:

__declspec(dllexport) double Adunare(double, double);
__declspec(dllexport) double Scadere(double, double);
__declspec(dllexport) double Inmultire(double, double);
__declspec(dllexport) 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 functiile definite in fisierul header are loc in fisierul cod sursa C++, cu extensia .cpp, si consta in scrierea codului sursa asociat operatiilor aritmetice implementate prin cele patru functii. Fisierul sursa C++ are urmatorul continut:

#include "CreateDLL.h"

double Adunare(double a, double b){
	return a+b;
}

double Scadere(double a, double b){
	return a-b;
}

double Inmultire(double a, double b){
	return a*b;
}

double Impartire(double a, double b){
	return a/b;
}

Legatura fisierului sursa cu fisierul header se realizeaza prin directiva #include plasata la inceputul fisierului sursa prezentat in exemplul de mai sus.
Crearea fisierului DLL se realizeaza prin compilarea solutiei Visual Studio 2008. Acesta este plasat in subdirectorul Debug la nivelul solutiei, pe acelasi nivel ierarhic cu subdirectorul aferent proiectului definit in cadrul solutiei.
Pentru utilizare, fisierul DLL este preluat din subdirectorul Debug al solutiei de creare DLL si plasat in solutia care il utilizeaza […].