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
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
Curtir tópico
+ 0
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.:
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].
Após a criação da DLL , é preciso chamá-la na aplicação. Isso se faz da seguinte forma:
Para carregar a DLL é preciso utilizar a função LoadLibrary. Esta função retornará um THandle para a 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 ...
Basta verificar se o [i:d0b50ea15b]procedure[/i:d0b50ea15b] ou função foi encontrado e, em caso positivo basta chamá-lo ...
Etc, etc, etc. E, finalmente, após utilizar a DLL é preciso liberá-la usando FreeLibrary ...
arrebola@host.sk
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
Clique aqui para fazer login e interagir na Comunidade :)