JNA? - JNA? - Error looking up function 'Hello': The specified procedure could not be found.  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
phstc
JavaGuru

Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline

Pessoal,

Estou fazendo uns testes com JNA, fiz uma DLL simples com VB6 para testar.

Project1.TestePabloDLL

Com uma única função

function Hello(nome as String) as String


Chamando por Jacob, funciona perfeitamente.

//ActiveXComponent sC = new ActiveXComponent("Project1.TestePabloDLL");
//Dispatch sControl = sC.getObject();
//Variant v = Dispatch.call(sControl, "Hello", "Pablo");
//System.out.println(v.toString());

Mas quando tento fazer com JNA, não funciona.

Se uso assim
//TestePabloDLL lib = (TestePabloDLL) Native.loadLibrary("Project1.TestePabloDLL", TestePabloDLL.class);
//String t = lib.Hello("Java Rocks");
//System.out.println(t);
Retorna
//Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'Project1.TestePabloDLL': The specified module could not be found.

Se mudo para
//TestePabloDLL lib = (TestePabloDLL) Native.loadLibrary("TestePabloDLL", TestePabloDLL.class);
//String t = lib.Hello("Java Rocks");
//System.out.println(t);
Retorna
//Caused by: java.lang.UnsatisfiedLinkError: Error looking up function 'Hello': The specified procedure could not be found.

No segundo exemplo, achou a DLL, mas não consegue invocar o método, o que pode ser?
 Nome do arquivo TestePabloDLL.dll [Disk] Download
 Descrição
 Tamanho 20 Kbytes
 Baixado:  86 vez(es)

This message was edited 2 times. Last update was at 23/05/2008 12:14:52

[Email]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

O JNA não é adequado para chamar DLLs feitas a partir do VB 6.0; você tem de usar o Jacob mesmo.

[WWW]
phstc
JavaGuru

Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline

JNA só é adequado para chamar DLLs em C/C++?
[Email]
psevestre
JavaEvangelist

Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline

phstc wrote:JNA só é adequado para chamar DLLs em C/C++?


Não faz diferença a linguagem em que foi desenvolvido. Seu problema é que a API binária de um componente ActiveX/COM/COM+ é mais enrolada do que parece à primeira vista No caso de um componente em VB, seu método "hello" tem que ser chamado usando de forma indireta. Não vou entrar nos detalhes sórdidos deste processo, mas, em resumo, siga o conselho anterior: use o que já está funcionando.

O JNA é mais adequado para chamar APIs publicadas do SO em que vc. está a rodar seu aplicativo.

http://justaphilpicks.blogspot.com/
[MSN]
phstc
JavaGuru

Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline

Valeu pessoal, muito obrigado!
[Email]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team