criar e chamar dlls

27/02/2003

0

Alguém poderia por favor me dar um exemplo de como fazer funções em dll no delphi e depois chamar nas aplicações ou me indicar onde posso ver isso?
Um exemplo bem simples como fazer uma função que soma dois números (na dll) e retorna o resultado (chamada do programa) seria bem útil.
Valeu,
LtLennon


Ltlennon

Ltlennon

Responder

Posts

27/02/2003

Anonymous

Primeiramente, é preciso criar a dll. Para isso basta criar um novo projeto do tipo DLL. Você então poderá criar funções e [i:d0b50ea15b]procedures[/i:d0b50ea15b]. Ex.:
procedure Soma; stdcall;
begin 
{ etc, etc, etc }
end; 

E, para que as funções ou [i:d0b50ea15b]procedures[/i:d0b50ea15b] estejam disponíveis quando a DLL for chamada é preciso utilizar [b:d0b50ea15b]exports[/b:d0b50ea15b].
exports 
  Soma;

Após a criação da DLL , é preciso chamá-la na aplicação. Isso se faz da seguinte forma:
{ É preciso declarar o tipo retornado pela função GetProcAddress }
type TSoma = procedure; stdcall;

{ Declaração de variáveis }
var
  hDLL : THandle;
  Soma : TSoma;

Para carregar a DLL é preciso utilizar a função LoadLibrary. Esta função retornará um THandle para a DLL ...
hDLL:=LoadLibrary(´exemplo.dll´);
if hDLL = 0 then raise Exception.Create(´Erro ao carregar DLL.´);

Para chamar o [i:d0b50ea15b]procedure[/i:d0b50ea15b] ou função em seu código é preciso saber seu endereço dentro da DLL. Para isso usa-se a função GetProcAddress ...
@Soma :=GetProcAddress(hDLL, ´Soma´);

Basta verificar se o [i:d0b50ea15b]procedure[/i:d0b50ea15b] ou função foi encontrado e, em caso positivo basta chamá-lo ...
if not assigned(Soma) then raise Exception.Create(´Não foi possível encontrar a função em questão´);
Soma;

Etc, etc, etc. E, finalmente, após utilizar a DLL é preciso liberá-la usando FreeLibrary ...
FreeLibrary(hDLL);


arrebola@host.sk


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar