Tutorial - Criando uma DLL (Dynamic Link Library) - C++ Builder

 

Introdução:

Uma Dynamic Link Library ou DLL é um programa que outro programa precisa para funcionar. É mais comum a dynamic link library ou DLL vir com uma extensão .dll, mas isso não quer dizer que só é necessário vir com essa extenção. DLLs são criadas por várias razões,a mais comum é,porque um programa precisa dela para "ligar" e ter conhecimento da programação dentro da DLL.

 

Começando ...

1 - Inicie o Borland C++ Builder. Clique em FILE/CLOSE ALL

2 - Clique em FILE/NEW/OTHER../DLL Wizard.

C++ Builder 6

3 - Clique em OK quando aparecer essa mensagem:

Dll Entry Point OK

4 - Agora vamos salvar o projeto. Vá em FILE/SAVE ALL. Depois criei um pasta no diretório de projetos do C++ Builder, chamado DLLExercise. E depois salve os dois nessa pasta com os nomes: DLLUnit = Unit1.cpp e DLLProject = Nome do projeto.

5- Em cima da função DLLEntryPoint() , declare as funções necessárias:

//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
//---------------------------------------------------------------------------
// This function is used to calculate the total area of a parallelepid rect
double BoxArea(double L, double H, double W);
// This function is used to calculate the volume of a parallelepid rectangle
double BoxVolume(double L, double H, double W);
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
double BoxArea(double L, double H, double W)
{
return 2 * ((L*H) + (L*W) + (H*W));
}
//---------------------------------------------------------------------------
double BoxVolume(double L, double H, double W)
{
return L * H * W;
}
//---------------------------------------------------------------------------

 

6 - Agora modifique o código-fonte da DLL para ficar parecido com isso:

//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
//---------------------------------------------------------------------------
// This function is used to calculate the total area of a parallelepid rect
double BoxArea(double L, double H, double W);
// This function is used to calculate the volume of a rectangular parallelepid
double BoxVolume(double L, double H, double W);
// This function is used to get the dimensions of a rectangular parallelepid
// calculate the area and volume, then pass the calculated values to the
// function that called it.
extern "C" __declspec(dllexport)void BoxProperties(double Length, double Height,
double Width, double& Area, double& Volume);
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
double BoxArea(double L, double H, double W)
{
return 2 * ((L*H) + (L*W) + (H*W));
}
//---------------------------------------------------------------------------
double BoxVolume(double L, double H, double W)
{
return L * H * W;
}
//---------------------------------------------------------------------------
void BoxProperties(double L, double H, double W, double& A, double& V)
{
A = BoxArea(L, H, W);
V = BoxVolume(L, H, W);
}
//---------------------------------------------------------------------------

 

7 - Agora salve seu porjeto. Para isso clique em FILE/SAVE ALL.

8 - Para compilar e fazer o build da DLL você terá que ir em PROJECT/Build DLLProject

9 - Agora a DLL já está pronta para o uso.

10 - Não se esqueça de salvar.

 

Usando a DLL em um projeto ...

Agora teremos que criar um programa para funcionar com a DLL.

 

1 - Faça um novo projeto. O projeto é usando a VCL.

2 - Salve o projeto. Para isso clique FILE/SAVE ALL

3 - Salve a unit como Main e o projeto como ParaRect

4 - Deixa a Form parecido com isso:

Form Link DLL

5 - Adicione ao seu projeto a DLL que foi criada anteriormente.Não a DLL e sim o arquivo DLLUnit !

6 - No evento OnClick do Botão Exit coloque:

7 - Para fazer o programa linkar com a DLL escreva essas comandos:


#include "Main.h" // Nome do Projeto
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
extern "C" __declspec(dllimport)void BoxProperties(double L, double H,
double W, double& A, double& V); // Linkar com a DLL

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnCalcultateClick(TObject *Sender)
{

// Esse codigo-fonte deve ficar no Botao Calculate
double Length, Height, Width, Area, Volume;

Length = edtLength->Text.ToDouble();
Height = edtHeight->Text.ToDouble();
Width = edtWidth->Text.ToDouble();

BoxProperties(Length, Height, Width, Area, Volume);

edtArea->Text = Area;
edtVolume->Text = Volume;

}
//---------------------------------------------------------------------------

8 - Salve o projeto.

9 - Compile

10 - Executar (para testar)

 

Outro exemplo , mas sem usar a VCL ...

//---------------------------------------------------------------------------
#include <iostream.h>
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
extern "C" __declspec(dllimport)void BoxProperties(double L, double H,
double W, double& A, double& V);
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
double Length, Height, Width, Area, Volume;

cout << "Enter the dimensions of the box\n";
cout << "Length: ";
cin >> Length;
cout << "Height: ";
cin >> Height;
cout << "Width: ";
cin >> Width;

BoxProperties(Length, Height, Width, Area, Volume);

cout << "\nProperties of the box";
cout << "\nLength: " << Length;
cout << "\nHeight: " << Height;
cout << "\nWidth: " << Width;
cout << "\nArea: " << Area;
cout << "\nVolumne: " << Volume;

cout << "\n\nPress any key to continue...";
getchar();
return 0;
}
//---------------------------------------------------------------------------

 

 

Espero que gostem, aproveitem !

Visitem também:

Abelha Games e Jogos

Abelha e Abelhas | Games,Animais em extinção, tutoriais,etc.

Abelha Tutoriais

 

Tutorial feito e traduzido à partir do site functionx.com/bcb