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

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

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.

 

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

 

Espero que tenha sido útil e até a próxima!

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?