web-dev-qa-db-fra.com

Comment appeler C++ à partir de Java?

Je voulais appeler une méthode C++ à partir de Java. J'ai lu sur JNI, mais je ne comprends pas comment obtenir tous les fichiers de bibliothèque ni où je devrais le conserver pour pouvoir exécuter le programme à partir de la ligne de commande.

Existe-t-il un moyen d'appeler une méthode C++ à partir d'Eclipse lui-même, car je l'utilise pour exécuter des classes Java.

20
user970500

Bien que j’ai utilisé le pontage JNI-C++ dans le passé (un peu cependant), cela peut être un peu moche. Vous voudrez peut-être envisager d'utiliser SWIG pour vous aider à générer tout le code de la plaque de la chaudière en désordre.

6
Michael Anderson

Si JNI est trop compliqué, vous pouvez regarder JNA . Dans le premier cas, vous devez créer du code wrapper natif (en C ou C++) pour joindre le code Java et le code natif (C++/C/...). Dans le second cas, cela se fait au moment de l'exécution (vous n'avez donc besoin que du code Java + config).

6
Fernando Miguélez

J'ai déjà utilisé la JNA pour des interfaces simples et c'était assez simple et élégant. Il est toutefois conseillé de s’adresser à SWIG s’il existe une interface complexe. 

Il existe de bonnes réponses qui comparent SWIG à JNI et à la JNA. Cela fait longtemps que la question a été posée.

SWIG vs JNI et JNA

2
Arabasta

JNA peut être utilisé à la place de JNI.

Tout ce dont vous avez besoin est de télécharger JNA jar (HTTPS://GITHUB.COM/JAVA-NATIVE-ACCESS/JNA#DOWNLOAD) qui devrait être inclus dans votre projet Java.

Vous devez indiquer l'emplacement de votre bibliothèque c ++ dans les propriétés de votre projet.

  • Projet clic droit
  • Courir
  • Dans VM, les options incluent ceci -Djava.library.path = "C: Votre dll Location".

Visitez ce site pour un exemple qui a également un code source pour Java et un projet c ++ pour savoir comment cela fonctionne. (http://blog.mwrobel.eu/how-to-call-dll-methods-from-Java/#a_downloads } [)

1
Rishabh Mehta

JavaCPP - https://github.com/bytedeco/javacpp

Il fournit un accès efficace au C++ natif en Java. Sous le capot, il utilise JNI, donc il fonctionne avec toutes les implémentations de Java SE.

Beaucoup plus facile que la JNA/JNI 

0
Ariel
How to call a C/C++ function from Java then you can use
Java Native Interface (JNI), part of the Java platform, is an interface that enables communication 
between Java applications running on a Java Virtual Machine (JVM) and native applications or libraries
written in other programming languages (e.g. C, C++).
you can use some below urls for as examples.
http://malinsky.eu/blog/how-to-call-a-c-function-from-Java/
https://www3.ntu.edu.sg/home/ehchua/programming/Java/JavaNativeInterface.html
0
mkumar0304