Criando DLLs
caros amigos,
É uma prazer juntar-me a vcs nesse fórum. Espero poder contribuir bastante, mas, no momento, preciso de ajuda.
Preciso criar uma dll em delphi para usá-la em uma página ASP. Criei a DLL seguindo as orientações
do artigo ..., mas na hora de registrar está dando um erro:
No MTS a mensagem diz que o arquivo não contem componentes ou biblioteca de tipos. Utilizando o
comando REGSVR32, a mensagem de erro diz que o arquivo foi carregado, mas não pode ser registrado
porque o ponto de entrada DllRegisterServer não foi localizado.
Vcs saberiam informar o que está faltando para que a dll criada possa ser registrada no Windows.
Segue abaixo o código exemplo que estou usando.
abs e desde já obrigado.
André Dantas
CÓDIGO
library Comparar;
uses
SysUtils,
Classes;
function Max(a, b : double): double; export; stdcall;
begin
if (a > b) then
result := a
else
result := b;
end;
exports
Max index 1;
begin
end.
É uma prazer juntar-me a vcs nesse fórum. Espero poder contribuir bastante, mas, no momento, preciso de ajuda.
Preciso criar uma dll em delphi para usá-la em uma página ASP. Criei a DLL seguindo as orientações
do artigo ..., mas na hora de registrar está dando um erro:
No MTS a mensagem diz que o arquivo não contem componentes ou biblioteca de tipos. Utilizando o
comando REGSVR32, a mensagem de erro diz que o arquivo foi carregado, mas não pode ser registrado
porque o ponto de entrada DllRegisterServer não foi localizado.
Vcs saberiam informar o que está faltando para que a dll criada possa ser registrada no Windows.
Segue abaixo o código exemplo que estou usando.
abs e desde já obrigado.
André Dantas
CÓDIGO
library Comparar;
uses
SysUtils,
Classes;
function Max(a, b : double): double; export; stdcall;
begin
if (a > b) then
result := a
else
result := b;
end;
exports
Max index 1;
begin
end.
Avfdantas
Curtidas 0
Respostas
Glauberms
26/07/2003
Dá uma olhada no exemplo abaixo que cria e utiliza funções em dll e atenção na clausula [b:b3b65a8aa3]USES[/b:b3b65a8aa3], talvez esteja faltando declarar [b:b3b65a8aa3]WinTypes[/b:b3b65a8aa3] e [b:b3b65a8aa3]WinProcs[/b:b3b65a8aa3]. Não utilizei o exemplo mas eu já tinha visto e procurei novamente.
Espero que o ajude!
[i:b3b65a8aa3]Edite diretamente no DPR, e depois salve como Funções.dpr:
Library Funções;
Uses SysUtils,WinTypes,WinProcs;
{ Uma função que tira os espaços no início e no final de uma string }
Function Trim(J:String):String; Export;
Begin
While J[Length(J)]=#32 do Dec(J[0]);
If Length(J)>1 then
While (J[1]=´ ´) do
Begin
Delete(J,1,1);
If Length(J)<=1 then J:=´´;
end;
Result:=J;
end;
Exports { Torna visivel para os programas }
Trim;
Begin
End.
Para usar num programa:
Unit Unit1;
Interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{ Declara a funcao }
Function Trim(J:String):String; External ´funcoes.dll´;
{$R *.DFM}
Procedure TForm1.FormClick(Sender: TObject);
begin
Caption:=Trim(´ Visite sempre o Delphi Club ´); { Note os espacos }
end;[/i:b3b65a8aa3]
Espero que o ajude!
[i:b3b65a8aa3]Edite diretamente no DPR, e depois salve como Funções.dpr:
Library Funções;
Uses SysUtils,WinTypes,WinProcs;
{ Uma função que tira os espaços no início e no final de uma string }
Function Trim(J:String):String; Export;
Begin
While J[Length(J)]=#32 do Dec(J[0]);
If Length(J)>1 then
While (J[1]=´ ´) do
Begin
Delete(J,1,1);
If Length(J)<=1 then J:=´´;
end;
Result:=J;
end;
Exports { Torna visivel para os programas }
Trim;
Begin
End.
Para usar num programa:
Unit Unit1;
Interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{ Declara a funcao }
Function Trim(J:String):String; External ´funcoes.dll´;
{$R *.DFM}
Procedure TForm1.FormClick(Sender: TObject);
begin
Caption:=Trim(´ Visite sempre o Delphi Club ´); { Note os espacos }
end;[/i:b3b65a8aa3]
GOSTEI 0
Avfdantas
26/07/2003
Glauber,
Obrigado pela ajuda. Realmente funcionou! Porém, apenas quando uso a DLL em outro aplicativo Delphi. Quanto tento registrar a DLL para usá-la em uma página ASP, por exemplo, os erros continuam acontendo.
Talvez o problema seja que a estrutura da DLL que reportei, não possui a separação em classes. Para que seja registrada no windows a estrutura deveria ser, por exemplo:
nome da dll
classe 1
metodo 1
metodo 2
classe 2
metodo 1
metodo 2
metodo 3
Não consegui criar isso em Delphi.
De qualquer forma obrigado pela força
Obrigado pela ajuda. Realmente funcionou! Porém, apenas quando uso a DLL em outro aplicativo Delphi. Quanto tento registrar a DLL para usá-la em uma página ASP, por exemplo, os erros continuam acontendo.
Talvez o problema seja que a estrutura da DLL que reportei, não possui a separação em classes. Para que seja registrada no windows a estrutura deveria ser, por exemplo:
nome da dll
classe 1
metodo 1
metodo 2
classe 2
metodo 1
metodo 2
metodo 3
Não consegui criar isso em Delphi.
De qualquer forma obrigado pela força
GOSTEI 0
Glauberms
26/07/2003
Foi mal não li a parte sobre ASP mas tem um artigo da borland que demonstra as configurações necessárias para se depurar DLL´s ASP ou ISAPI usando o Delphi e IIS 5.0, pode ser baixado no link abaixo:
[url]http://lib.seven.com.br/arquivos/687/asp.zip[/url]
No link da página onde se faz o download [url]http://lib.seven.com.br/[/url] existe mais artigos.
Tomara que desta vez de certo...
Obs: Vi que ninguém tinha te ajudado e só estou tentando. Como já disse não conheco muito de ASP
[url]http://lib.seven.com.br/arquivos/687/asp.zip[/url]
No link da página onde se faz o download [url]http://lib.seven.com.br/[/url] existe mais artigos.
Tomara que desta vez de certo...
Obs: Vi que ninguém tinha te ajudado e só estou tentando. Como já disse não conheco muito de ASP
GOSTEI 0
Avfdantas
26/07/2003
obrigado pela ajuda!
Realmente o grande problema é fazer essa DLL ser registrada no Windows. Não acho artigo, livro, exemplos, ... nada que fale sobre isso. Mas vou continuar tentando, se descobrir eu publico no fórum.
abs,
Realmente o grande problema é fazer essa DLL ser registrada no Windows. Não acho artigo, livro, exemplos, ... nada que fale sobre isso. Mas vou continuar tentando, se descobrir eu publico no fórum.
abs,
GOSTEI 0
Afarias
26/07/2003
|Realmente o grande problema é fazer essa DLL ser registrada no
|Windows.
Vc está criando uma Dll normal?? (é o q me parece)
O que vc quer é uma biblioteca ActiveX (só bibliotecas ActiveX são registrasdas como o REGSVR32)
Arquivo -> Novo -> Aba ActiveX -> selecione ActiveX Library.
Depois, vc pode adicionar seus objetos (como um Active Server Object por ex.)
T+
|Windows.
Vc está criando uma Dll normal?? (é o q me parece)
O que vc quer é uma biblioteca ActiveX (só bibliotecas ActiveX são registrasdas como o REGSVR32)
Arquivo -> Novo -> Aba ActiveX -> selecione ActiveX Library.
Depois, vc pode adicionar seus objetos (como um Active Server Object por ex.)
T+
GOSTEI 0