Nesta parte do artigo, vamos criar um pequeno projeto na plataforma de desenvolvimento lazarus, para realizar a execução das possíveis funções existentes em uma DLL criada no próprio lazarus ou em outra plataforma de desenvolvimento.

Primeiramente vamos criar um novo projeto na IDE do lazarus selecionando através do menu principal a opção File > New, e na janela que se abre selecione a opção “Project” e “Aplication” conforme imagem abaixo:

img

Agora monte o formulário principal conforme o mostrado na imagem abaixo:

img

É importante lembrar que devemos adicionar a Unit “ShareMem” na uses de nosso projeto para evitar problemas com os campos do tipo String. Veja o exemplo na imagem abaixo:

img

Agora vamos fazer a declaração da função da DLL em nosso projeto para logo após programar o código que utilizará esta rotina. Para realizar esta declaração use o código abaixo imediatamente antes da classe “var”:

function RetornaTotalCampos(var Mensagem:String;pValor1,pValor2:Double)
:Double;stdcall; external 'DLLLazus.dll';

Dê um duplo clique no botão que adicionamos no formulário e insira a seguinte codificação:

var Mensagem : String;
  Resultado : Double;
begin
try
 Resultado:= RetornaTotalCampos(Mensagem,StrToFloat(EdtValor1.Text),
 StrToFloat(EdtValor2.Text));
 EdtMensagem.Text := Mensagem;
 EdtResultado.Text:= FormatFloat('0.00',Resultado);
except
  ShowMessage('Os valores informados são inválidos!');
end;

Veja como ficará toda a codificação do nosso formulário:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, 
  Controls, Graphics, Dialogs,
  StdCtrls;

type

  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    EdtMensagem: TEdit;
    EdtValor1: TEdit;
    EdtValor2: TEdit;
    EdtResultado: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
function RetornaTotalCampos(var 
Mensagem:String;pValor1,pValor2:Double):Double;
stdcall; external 'DLLLazus.dll';
 
var
  Form1: TForm1;
 
implementation
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var Mensagem : String;
    Resultado : Double;
begin
  try
    Resultado:= RetornaTotalCampos(Mensagem,StrToFloat(EdtValor1.Text),
    StrToFloat(EdtValor2.Text));
    EdtMensagem.Text := Mensagem;
    EdtResultado.Text:= FormatFloat('0.00',Resultado);
  except
    ShowMessage('Os valores informados são inválidos!');
  end;
end;

initialization
  {$I Unit1.lrs}
 
end.

Agora precisamos apenas compilar o projeto e realizar o teste.

Nota: A unit ShareMem no lazarus faz referencia a library fpcmemdll.dll comumente encontrada no Linux. Esta mesma será necessária para rodar o projeto.