tutorial - metodos nativos en java
¿Cómo llamar a C++ desde Java? (6)
Aunque he usado el puente JNI-C ++ en el pasado (aunque solo un poco), puede ser un poco feo. Es posible que desee considerar el uso de SWIG para ayudarlo a generar todo el código de la placa de la caldera.
Quería llamar a un método C ++ desde Java. Leí sobre JNI, pero no entiendo cómo obtener todos los archivos de la biblioteca y dónde debería guardarlos para ejecutar el programa desde la línea de comandos.
¿Hay alguna forma de llamar a un método C ++ desde el propio Eclipse, porque lo estoy usando para ejecutar clases de Java?
He usado JNA antes para interfaces simples y era lo suficientemente simple y elegante. Se recomienda, sin embargo, que si hay una interfaz compleja, es mejor utilizar SWIG.
Hay algunas buenas respuestas que comparan SWIG con JNI y JNA. Ha pasado un tiempo desde que se hizo la pregunta.
JavaCPP - https://github.com/bytedeco/javacpp
Proporciona acceso eficiente a C ++ nativo dentro de Java. Bajo el capó, utiliza JNI, por lo que funciona con todas las implementaciones de Java SE.
Mucho más fácil que JNA / JNI
Si JNI es demasiado complicado, puedes echarle un vistazo a JNA . En el primer caso, debe crear un código de envoltorio nativo (en C o C ++) para unirse a Java y el código nativo (C ++ / C / ...). En el segundo caso, se realiza en tiempo de ejecución (por lo que solo necesita Java code + config).
JNA se puede utilizar en lugar de JNI.
Todo lo que necesita es descargar el jar de JNA ( https://github.com/java-native-access/jna#download ) que debe incluirse en su proyecto java.
Debe indicar la ubicación de su biblioteca c ++ en las propiedades de su proyecto.
- Clic derecho proyecto
- correr
- En las opciones de VM incluyen este -Djava.library.path = "C: Tu ubicación dll" .
Visite este sitio para ver un ejemplo que también tiene un código fuente para el proyecto Java y c ++ para saber cómo funciona esto. ( http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/#a_downloads )
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