GARANTIR DESCONTO

Fórum Erro no uso de dll externa #269426

21/02/2005

0

Estou tentando utlizar uma ddl externa chamada cast.dll

meu codigo

function encode(key, v_s :variant): variant; stdcall; external ´cast.dll´;

dá o seguinte erro ´Não foi possivel localizar o ponto de entrada do procedimento encode na biblioteca de vínculo dinâmico cast.dll´

Alquem sabe do que se trata ???

sei que esta dll tem o metodo ´encode´

a documentação da dll esta no link abaixo

http://download.paipai.net/texts/asp-cast128-1.1.htm#2.10


Luizcsantanajr

Luizcsantanajr

Responder

Posts

21/02/2005

Massuda

Dei uma olhada no link que você passou e me parece que essa DLL é na verdade um controle ActiveX ou um componente COM, não tenho certeza. Nesse caso, o que você está tentado não funciona, porque a função encode é na verdade um método de um controle ActiveX/componente COM.

O procedimento correto seria instalar o controle no Windows (as instruções estão no próprio link que você passou) e, pelo que o exemplo em VB mostra, usar CreateOleObject da unit ComObj para criar uma instancia do controle. Entretanto, para isso dar certo acho que fica faltando montar uma unit com a definição da interface exporta pelo controle e isso, neste momento, eu não tenho idéia de como fazer de um jeito fácil.


Responder

Gostei + 0

21/02/2005

Luizcsantanajr

Massuda,

Obrigado mas :
Como eu vou criar uma unit com definição da interface ?
Você tem algum exemplo de como fazer isso ?


Responder

Gostei + 0

21/02/2005

Beppe

A rotina encode não foi exportada com este nome. Verifique (no PeViewer, por exemplo), que nome deram. Supondo que o nome é ´vb_encode´:

function encode(key, v_s :variant): variant; stdcall; external ´cast.dll´ name ´vb_encode´;

Fora isto, vc precisa observar o que o Massuda disse. Não sei o que estava em mente dos criadores sobre o uso da rotina.


Responder

Gostei + 0

21/02/2005

Massuda

A rotina encode não foi exportada com este nome. Verifique (no PeViewer, por exemplo), que nome deram...
Na verdade, como essa DLL é um componente COM, ela possui apenas três :shock: funções exportadas (DllCanUnloadNow, DllGetClassObject, DllRegisterServer - faltou DllUnregisterServer :cry: ), o resto é implementado via COM.

Pesquisando um pouco mais no site, descobri que tem os fontes :wink: A interface COM é declarada no arquivo cast.odl:
// cast.odl : type library source for cast.dll

// This file will be processed by the MIDL compiler to produce the
// type library (cast.tlb).

[ uuid(B11567EB-EF87-4BDD-9070-581EAB099A08), version(1.0) ]
library Cast
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");

//  Primary dispatch interface for chipher

[ uuid(2121B8E7-E209-410D-AF86-20CBD9A96527) ]
dispinterface Ichipher
{
properties:
// NOTE - ClassWizard will maintain property information here.
//    Use extreme caution when editing this section.
//{{AFX_ODL_PROP(chipher)
//}}AFX_ODL_PROP

methods:
// NOTE - ClassWizard will maintain method information here.
//    Use extreme caution when editing this section.
//{{AFX_ODL_METHOD(chipher)
[id(1)] VARIANT encode(VARIANT key, VARIANT inData);
[id(2)] VARIANT decode(VARIANT key, VARIANT inData);
[id(3)] VARIANT test(VARIANT key, VARIANT inData);
[id(4)] VARIANT b64StrEnc(VARIANT inData);
[id(5)] VARIANT b64StrDec(VARIANT inData);
[id(6)] VARIANT b64ArrayEnc(VARIANT inArray);
[id(7)] VARIANT b64ArrayDec(VARIANT inData);
[id(8)] VARIANT cast128decode(VARIANT key, VARIANT inData);
[id(9)] VARIANT cast128encode(VARIANT key, VARIANT inData);
[id(10)] VARIANT cast128ArrayEnc(VARIANT key, VARIANT inArray);
[id(11)] VARIANT cast128ArrayDec(VARIANT key, VARIANT inArray);
//}}AFX_ODL_METHOD

};

//  Class information for chipher

[ uuid(12BBFB97-0AEC-4837-8061-12CA8EAD166B) ]
coclass chipher
{
[default] dispinterface Ichipher;
};

//{}
//}}AFX_APPEND_ODL}}
};
Isso é usado pelo compilador C para gerar o TLB. Agora só seria preciso traduzir isso para Delphi... alguém se habilita?


Responder

Gostei + 0

21/02/2005

Beppe

Se é COM, o Delphi pode importar automaticamente. Mas deu ´Erro ao importar biblioteca de tipo´ tanto com a .odl tanto com a .dll...


Responder

Gostei + 0

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

Aceitar