Galera estou estudando a respeito do JNA e do JNI, até agora cheguei a conclusão que pelo JNA não vai ser possível o que quero fazer, estou desenvolvendo uma aplicação, que vai rodar no Windows Mobile com a J9 IBM, na verdade a aplicação está pronta falta agora a impressão, o que achei que seria a parta mais insignificante está dando dor de cabeça, pois o aparelho tem uma impressora embutida, única forma de acesso é via DLL.
Para se usar DLL de terceiros ou seja código totalmente nativo, nada de JNI, a melhor opção seria a JNA, perdi alguns dias para aprender, mas na hora de testar no aparelho a decepção, a JNA não da suporte a processadores ARM, então não poderei utilizá-la no meu PDA, acho que agora não tenho como fugir da JNI pura.
Gostaria de ajuda de vcs no esclarecimento de como utilizar a JNI para uma leitura de uma DLL totalmente nativa, ela não tem as chamadas dos métodos no padrão JNI, então como proceder em um caso destes?
Possuo a DLL de terceiro assim como a documentação desta DLL, com todos os métodos e parâmetros que devo passar.
Se você possui a documentação da dll então não terá problemas. Só precisa ter cuidado na hora de escolher os tipos de dados.
Por exemplo, um dword em c++, é um tipo de 32 bits não sinalizado, e você pode usar um int em java, porque também possui 32 bits. Para ponteiros, pode usar Object
O que causa dor de cabeça é não possuir documentação da dll, sendo necessário fazer engenharia reversa e desassembly.
Aqui tem um livro gratuito, muito útil. Tem tudo sobre jni.
é cara que viajem.
Bom pelo o que eu entendi, preciso criar meu codigo fonte java, mais 2 codigos C++, onde o primeiro codigo vai acessar o segundo e o primeiro codigo é o codigo C++ preparado para a JNI, ele que será tranformado em uma dll acessivel pelo java, no segundo C++ é um codigo C++ normal, que faz uso da dll em C# do .net.