Acessar uma DLL ja existente com JNI

Olah,

moçada, ja li o tutorial da sun, e alguns outros bons tutoriais de JNI, porem, estou com um problema, sei que temos que importar o .h gerado pelo javah, e usar um padrão nos nomes dos metodos nativos…

porem, imaginem se essa dll for disponibilizada por uma empresa, e essa empresa nem sabe o que é java, muito menos jni…

então, a unica coisa que posso é executar os metodos dessa dll como se fosse uma caixa preta… não é possivel modificar a dll…

se não possivel, vcs acham que existe como fazer um meio campo entre a dll ja existente e uma nova dll com o padrão??? sei lah… é um negocio meio louco, mas, se alguem tiver alguma coisa, agradeço…

[]'s

vc pode criar uma dll sua que serve como “ponte” entre o java e a dll… dai na sua dll vc poe pra rodar com o java e nas funcoes simplesmente chama as funcoes da dll…

hehehe,

é isso ai Felipe, deu certo…

porem, não ha como fazer de forma generica… esse é o problema… pq onde trabalho, agente recebe dll’s com RN’s dos clientes, e tava pensando na forma de passar direto pros programadores java…

mas é isso ai…

brigadão…

Olá, Rodrigo, como vai?

Eu tmb estou com o mesmo problema. Preciso acessar as funções de uma DLL nativa, que já está pronta. Vc poderia enviar um exemplo baseado na sua solução e explicar como vc fez? A DLL-ponte vc fez em C++?

Abraço.

Flávio

E ae???

Isso é o que eu chamo de desenterrar um tópico…

Use JNA é bem mais simples… https://jna.dev.java.net/

Nunca usei mais li muitas vezes que é mais fácil de implementar do que o JNI…

Abraço…

Pois é, coisas da necessidade, rs!

Eu tinha conseguido resolver com o Jenie, porém com dll de terceiros não vai rolar. Pouco antes de ver sua resposta, Danilo, acabei achando um artigo sobre o JNA.

Muito obrigado pela ajuda! Vou dar uma olhada no link que vc mandou.

Abraço.

Flávio

Ola,

Usa JNA… da uma olhada nesse blog:http://www.urubatan.com.br/chamando-metodos-nativos-dllso-em-java-sem-jni/

Abracos.

Ola,

Uma outra opcao eh fazer o que o Felipe comentou. Criar a sua propria dll. No meu caso JNA nao funcionou entao eu tive que criar a minha propria dll.

Olá, wJava.

Com JNA funcionou. No meu caso estou acessando uma DLL desenvolvida por terceiros.

Abraço.

Flávio

Galera comigo vou ter que usar a JNI mesmo, então estou pensando em criar uma ddl pronta para JNI e ela chamando a DLL que gostaria de usar, minha duvida é se alguem pode dar um exemplo de como chamar uma DLL de terceiro dentro de uma DLL voltada para o JNI, eu montei minha classe java, gerei o .h, apartir dele montei minha dll “ponte” agora preciso chamar a DLL do terceiro.

Outro ponto minha dll do terceiro foi feita em C#, e estou montando minha DLL de ponte pelo C com o gcc, será que funcionará? ou terei que gerar a ddl em C# tambem? utilizando o visual studio? Obrigado!

Galera estou tentando acessar uma dll de terceiros pelo JNA dessa forma:

public interface DllCatraca extends Library {

        //define qual catraca sera utilzada para comunicação
        public boolean InicializaComunicacao(String ip);
}

Aqui eu chamo o metodo:

public static void main(String[] args) {

        System.out.println("Carregando...");
       
        //carrego a dll
        DllCatraca lib = (DllCatraca) Native.loadLibrary("TCA", DllCatraca.class);

        boolean ret = false;
        ret = lib.InicializaComunicacao("192.168.1.22");
        System.out.println(ret);
       
    }

Não sei mais como eu posso fazer, ta dando esse erro:

[code]

A fatal error has been detected by the Java Runtime Environment:

Internal Error (0xeedfade), pid=7156, tid=6532

JRE version: Java™ SE Runtime Environment (8.0_31-b13) (build 1.8.0_31-b13)

Java VM: Java HotSpot™ Client VM (25.31-b07 mixed mode, sharing windows-x86 )

Problematic frame:

C [KERNELBASE.dll+0x12f71]

Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

An error report file with more information is saved as:

C:\Users\i9\Documents\NetBeansProjects\CatracaPR_1\hs_err_pid7156.log

If you would like to submit a bug report, please visit:

http://bugreport.java.com/bugreport/crash.jsp

The crash happened outside the Java Virtual Machine in native code.

See problematic frame for where to report the bug.

#[/code]