Neste tutorial vou esta demonstrando de forma prática como se criar DLL usando a plataforma de desenvolvimento Free Pascal chamada Lazarus em sua versão 0.9.28.2.

 

Sem mais delongas, vamos por as mãos na obra.

 

O primeiro passo, após abrir a IDE do lazarus, será fechar todos os arquivos que porventura estejam abertos, lembrando que o lazarus tem a característica de recuperar o último projeto alterado.

 

Já com os arquivos fechados, selecione no menu principal a opção File->New e na janela que se abre, localize a opção “Project” e “Library”, conforme demonstrado na imagem abaixo:

 
 

Na seqüência clique em “OK” para confirmar.

 

Agora salve o projeto em uma pasta de sua preferência com o nome de DLLLazarus ou como preferir, e em seguida selecione no menu principal a opção Projetct->View Source para que possamos visualizar os códigos do mesmo. Deverá ser apresentada uma estrutura conforme a imagem abaixo:

 

Agora adicione uma nova “Unit” utilizando a opção File->new unit do menu principal e salve esta com o nome de “funções.pas” ou outro nome conforme preferir.

 

Agora codifique esta unit com os seguintes códigos:

 

unit funcoes;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils;
 
function RetornaTotalCampos(var Mensagem:String;pValor1,pValor2:Double):Double;stdcall;

implementation

function RetornaTotalCampos(var Mensagem:String;pValor1,pValor2:Double):Double;stdcall;
begin
  Mensagem:='';
  // verifica se os valores são validos
  if (pValor1 <= 0) or (pValor2<=0) then
     Mensagem:='Os valores devem ser maior que zero!';
  // resultado
  Result := pValor1 + pValor2;
 
end;
 
end.

 

Agora vá aos códigos principais do projeto e vamos realizar algumas mudanças que são extremamente necessárias. Mas antes é importante saber que o que irá definir se ao compilar o projeto será criado uma DLL ou um EXE, é a classe inicial que até o momento esta como “Program DLLLazarus” onde DLLLazarus é o nome que usei para salvar o projeto. Devemos então primeiramente alterar para “Library DLLLazarus” e desta forma será gerado uma DLL.

 

Agora em Uses adicione a unit ShareMem, para evitar problemas com declarações de String’s e adicione também a classe exports e nela “RetornaTotalCampos”, que é o nome da função criada na unit funções.pas. Veja o exemplo de como deverá ficar abaixo:

 

Library DLLLazus;

{$mode objfpc}{$H+}
uses
  ShareMem,
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, LResources, funcoes
  { you can add units after this };
 
{$IFDEF WINDOWS}{$R DLLLazus.rc}{$ENDIF}
exports
RetornaTotalCampos;
 
begin
  {$I DLLLazus.lrs}
  Application.Initialize;
  Application.Run;
end.

 

Agora basta dar um Build no projeto para ser gerado a nossa DLL.

 

Na próxima parte deste artigo vamos ver um exemplo de chamada da função da DLL em um outro projeto.

 

Até lá!