Fórum Criando DLLs #171616

26/07/2003

0

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.


Avfdantas

Avfdantas

Responder

Posts

27/07/2003

Glauberms

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]


Responder

Gostei + 0

27/07/2003

Avfdantas

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


Responder

Gostei + 0

27/07/2003

Glauberms

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


Responder

Gostei + 0

29/07/2003

Avfdantas

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,


Responder

Gostei + 0

29/07/2003

Afarias

|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+


Responder

Gostei + 0

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

Aceitar