Realizando a Chamada da DLL com a IDE Lazarus – Tutorial DLL Lazarus – Parte 2

Neste pequeno artigos vamos ver de forma rápida e pratica como se criar uma DLL e realizar a chamada da mesma, utilizando os recursos da IDE do lazarus. Percebe-se que é basicamente da mesma forma que utilizamos para fazer esta rotina usando a IDE do delphi.

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:

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

É 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:

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.
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados