DLL native

3 respostas
Rage

Pessoal, alguém sabe dizer o que está faltando pra eu conseguir chamar um método da DLL?

public class MinhaClasse
{   
    public MinhaClasse() {
        System.loadLibrary("MinhaDLLRegistrada");
    }
    public static native void MetodoDaDLL(String k);  

    MinhaClasse.MetodoDaDLL("D:/Dir");
}

Quem puder, dá uma luz aí!
[]´s

3 Respostas

Luca

Olá

Acho difícil saber porque você não mostrou tudo que precisa ser feito.

Quando você conferiu sua solução com os exemplos do tutorial de JNI da Sun não achou nada diferente?

Acredito que no mínimo o fato de você carregar sua DLL no construtor da classe ao invés de um bloco estático já é meio esquisito.

Alem dos tutoriais que você com certeza leu, veja também http://www.semtexgirl.net/

[]s
Luca

davidbuzatto

Será que é tão simples assim fazer uma chamada a uma dll?

Nunca precisei fazer isso, mas dá uma pesquisada em como utilizar a JNI.

Falow!

emersonfxbx

Até onde eu sei (me corrijam se eu estiver falando besteira), não há acesso direto à bibliotecas compartilhadas (DLL no windows, “shared libraries” no unix e unix-like).
O que se pode fazer é criar uma interface JNI (essa sim uma DLL/shared library reconhecida pelo java) que faz a chamada a DLL/shared library em questão.

digamos que vc tenha que chamar uma função em uma dll:

int __stdcall FuncaoFeitaEmC(const char *parametro);

Primeiro vc criaria uma classe em java assim:
FuncoesDaDLL.java

public class FuncoesDaDLL {

public static native funcaoFeitaEmC(String parametro);

static {

System.loadLibrary(FuncoesDaDLLJNI);

}

}

depois de compilada a classe, vc roda “javah -jni FuncoesDaDLL”

feito isso, será criado um arquivo FuncoesDaDLL.h com as definições das funções que devem ser implementadas chamando a sua dll e compiladas em uma outra DLL (a DLL JNI) usando um compilador C++ (em C puro vc vai ter mais trabalho) (gcc , visual c++, c++ builder ou qualquer outro q crie DLLs)

Você acabará ficando com 2 dlls (a dll contendo a função desejada e a dll de JNI)

Coloque a dll onde o java possa encontrar qdo executar sua aplicação.

mais informações em: http://java.sun.com/j2se/1.4.2/docs/guide/jni/spec/jniTOC.html

Espero ter ajudado

Criado 25 de maio de 2007
Ultima resposta 27 de mai. de 2007
Respostas 3
Participantes 4