Problemas com DLL carregada no codigo Java usando JNI

4 respostas
matheuslmota

Caros, tenho uma DLL escrita em C++ usando os padrões JNI. Eu tenho uma classe Java com 4 métodos nativos e usei o seguinte comando:

para gerar o .h correspondente. Depois, fiz a implementação de um dos métodos nativos em C++ para depois que eu gerasse a DLL eu pudesse usá-la no Java. A minha DLL foi gerada usando o Visual C++ 2005. Depois que eu compilei minha DLL eu peguei o .dll gerado e coloquei na pasta windows/system32. No Java, eu fiz a sequinte chamada:

static { System.loadLibrary("MinhaDLL"); }

Até ai tudo bem. O problema surge quando eu instancio a classe que contém os métodos nativos e tento fazer a chamada a um desses método. Ocorre o seguite erro:

Exception in thread "main" java.lang.UnsatisfiedLinkError: MinhaClasse.metodoNativo(Ljava/lang/String;)V at MinhaClasse.metodoNativo(Native Method) at MinhaClasse.main(SLCript.java:37)//A referida linha é onde eu faço chamada ao meu método nativo
Os amigos poderiam me dar alguma dica sobre o que pode ser? Abraço a todos

4 Respostas

diogodcm

Já tenta-se fazer isso utilizando JNA? Pessoalmente eu acho bem mais simples.

J

Cara antes de partir para JNA, procure olhar se as assinaturas dos métodos no cpp estão com os mesmos nomes das assinaturas mapeandas no header. As assinaturas devem ser iguais. Trabalhei com JNI neste mês e me bati com o mesmo problema tentei JNA mas tbm n me ajudou, acabei de acertar com jni mesmo…

matheuslmota

Pois é fui ver meu problema era um método que um fui implementar e coloquei uma letra diferente da que estava na assinatura. Burrice mesmo. Mas a respeito da JNA, quais as vantagens de se usar ela e não usar JNI?

J

Po velho, infelizmente eu não sei… não consegui utilizar o JNA. Mas aparentemente é mais simples, aparentemente :roll:

Criado 6 de fevereiro de 2011
Ultima resposta 8 de fev. de 2011
Respostas 4
Participantes 3