Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sidarta

problemas dll activeX

Recommended Posts

Olá,

 

 

Estou tendo problema para criar uma dll que acesse as funções de uma dll ActiveX. A dll ActiveX já foi instalada, só preciso criar uma outra dll que acesse as funções dela.

 

Criei a seguinte dll, que está dando erro de Access violation:

library testeZk;

 

uses

ShareMem,

SysUtils,

Classes,

Windows,

ActiveX,

Graphics,

OleCtrls,

OleServer,

StdVCL,

Variants,

ComServ,

zkemkeeper_TLB in 'zkemkeeper_TLB.pas';

 

{$R *.res}

{$R *.TLB}

 

 

var

CZKEM1: TCZKEM;

 

 

function fnConnect_Net(const IPAdd: WideString; Port: Integer): WordBool; {$IFDEF WIN32} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}

begin

result := CZKEM1.Connect_Net(IPAdd, Port);

end;

 

function fnSetCommPassword(CommKey: Integer): WordBool; {$IFDEF WIN32} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}

begin

result := CZKEM1.SetCommPassword(CommKey);

end;

 

exports fnConnect_Net;

exports fnSetCommPassword;

end.

 

Quando testo a função fnConnect_Net da dll acima, dá esse erro:

Project Project2.exe raised exception class EAccessViolation with message 'Access violation at address 00386B16 in module testeZk.dll'. Read of address 0000022F0'. Process stopped. Use Step or Run to continue.

 

Alguém tem alguma sugestão? O que estou fazendo errado?

Grato,

Sidarta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer a declaração das funções, colocar a sessão "Exports" e dpois inplementar as funções..

 

uses
	ShareMem, SysUtils, Classes, Windows, ActiveX, Graphics, OleCtrls, OleServer, StdVCL, Variants, ComServ, 
	zkemkeeper_TLB in 'zkemkeeper_TLB.pas';

{$R *.res}
{$R *.TLB}


var
CZKEM1: TCZKEM;
	function fnConnect_Net(const IPAdd: WideString; Port: Integer): WordBool; stdcall;
	function fnSetCommPassword(CommKey: Integer): WordBool; stdcall;
	
exports 
	fnConnect_Net, fnSetCommPassword;

function fnConnect_Net(const IPAdd: WideString; Port: Integer): WordBool;
begin
	result := CZKEM1.Connect_Net(IPAdd, Port);
end;

function fnSetCommPassword(CommKey: Integer): WordBool; {$IFDEF WIN32} stdcall;
begin
	result := CZKEM1.SetCommPassword(CommKey);
end;
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.