2017-04-06 2 views
0

Je travaille sur un projet dans lequel j'ai des capteurs et je veux qu'ils se connectent à un PC via USB. maintenant ils écrivent il y a une lib de windows écrite en c et toutes les fonctions utilisent la convention d'appel cdecl de c et je dois être sûr que si je programme dans une autre langue (java!) que la convention d'appel est donnée. J'ai donc étudié un peu et trouvé quelques tutoriels pour lier des DLL en Java et/ou utiliser JNA. mais ce sont toutes de nouvelles choses pour moi et je veux être sûr, que c'est possible (et peut-être un exemple) - l'appareil n'est pas si bon marché et je veux le savoir avant de l'acheter.Utiliser C lib (dll) en java avec une convention d'appel c spécifique cdecl

Répondre

0

Vous pouvez appeler le code C de Java - il n'y a aucun problème ici. Puis, si vous avez quelque chose de très spécifique dans vos routines C, vous pouvez toujours passer par wrapper.

Jetez un coup d'oeil ici.

http://jnicookbook.owsiak.org/recipe-No-018/

Dans cet exemple, vous appellent code C - à son tour - appelle une autre bibliothèque.

Vous pouvez également le faire en liant votre code JNI avec une autre bibliothèque. Comme ici:

https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo023

Il y a beaucoup d'options. Quand il s'agit de JNI vs JNA. Assurez-vous que la JNA sera suffisamment efficace. En général, la JNA a tendance à être plus lente. Jetez un coup d'oeil ici:

https://github.com/mkopsnc/keplerhacks/tree/master/jnijna

Hope this helps.

Je ne poste pas de codes ici - tous les exemples du livre de recettes JNI sont disponibles chez github.

+0

merci pour la réponse! Je demande au vendeur de l'appareil et espère qu'ils peuvent m'aider un peu plus loin. l'aspekt avec l'efficace est un bon point. quand j'ai 2-3 capteurs et tous ont une fréquence de 40-50khz il y aura beaucoup d'appels - ou peut-être qu'ils ouvrent un flux ou quelque chose comme ça – white91wolf