Bonsoir,
J'aimerais savoir si il est possible avec Java d'utiliser une dll écrite en C/C++ sachant que cette dernière sert à programmer une carte d'acquisition via le port USB.
Ça parait bien compliqué n'est-ce pas ? Qu'en pensez-vous ?
Bonsoir,
J'aimerais savoir si il est possible avec Java d'utiliser une dll écrite en C/C++ sachant que cette dernière sert à programmer une carte d'acquisition via le port USB.
Ça parait bien compliqué n'est-ce pas ? Qu'en pensez-vous ?
Ceci devrait répondre à ta question : JNI dans les cours et tutoriels pour apprendre la programmation Java : http://java.developpez.com/cours/ et dans la FAQ Java JNI : http://java.developpez.com/faq/
Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Architecte Solution
LinkedIn : https://www.linkedin.com/in/nicolascaudard/
Merci pour les cours et tutoriels Java ça aide mais si j'ai bien compris avec cette solution il faut avoir le code source de la dll, non ? Et justement ça n'est pas mon cas, la dll est fournie avec la carte d'acquisition mais pas la source hélas... Est-ce toujours possible dans ces conditions ?
Autant que je me rappelle (je peux me tromper - si c'est le cas, d'autres corrigeront), dans un cas comme ca, il faut ecrire une 2e dll en C/C++ qui va faire appel aux fonctions de la premiere mais qui respecte le header JNI. Ensuite, il ne reste plus qu'a faire comme dans le tuto proposé par Robin56.
Salut,
C'est tout à fait cela. Avec JNI le code natif doit respecter le format native défini par JNI, et on ne peut donc pas appeler directement une autre librairie native quelconque sans passer par un intermédiaire.
De plus cette librairie peut également effectuer des conversions (en particulier si le type des données utilisés par la librairie est assez complexe.
Une autre solution serait d'utiliser JNA, qui peut s’avérer extrêmement simple à mettre en place avec le Direct Mapping si le type des données n'est pas trop complexe.
a++
Merci et +1. Avec cette astuce la dll de départ peut être écrite dans n'importe quel langage ou bien il faut absolument qu'elle soit écrite en C/C++ ? Je demande cela car finalement j'ai un doute, je ne suis pas sûr de savoir en quel langage elle est écrite.
Sinon pour ce qui est de JNA, qu'est-ce qui est considérée comme pas trop complexe en matière de données ?
Peut-on utiliser JNI ou JNA avec Eclipse ou NetBeans ?
Merci.
EDIT : J'ai trouvé ça http://mbaron.developpez.com/javase/jnijna dans les cours et tutoriels pour apprendre la programmation Java.
Partager