2011-09-29 30 views
15

Quería llamar a un método C++ desde Java. Leí acerca de JNI, pero no entiendo cómo obtener todos los archivos de la biblioteca y dónde debo guardarlos para poder ejecutar el programa desde la línea de comandos.¿Cómo llamar a C++ desde Java?

¿Hay alguna manera de llamar a un método de C++ desde Eclipse, porque lo estoy utilizando para ejecutar clases de Java.

+0

Tome un vistazo a este hilo - http://stackoverflow.com/questions/7212982/jni-unable-to-fix-this-error/7213943#7213943 – adatapost

+0

sólo tiene que seguir algún tutorial y obtener JNI comenzó –

+0

Posible duplicado de [¿Cómo usar NDK? Comenzando con la aplicación 'hello world'] (http://stackoverflow.com/questions/4777935/how-to-use-ndk-starting-with-hello-world-app) –

Respuesta

5

Si JNI es demasiado complicado, puede consultar JNA. En primer caso, debe crear un código contenedor nativo (en C o C++) para unir código Java y nativo (C++/C/...). En el segundo caso, se realiza en tiempo de ejecución (por lo que solo necesita Java code + config).

+0

"JNI" es la respuesta estándar. Pero si JNA satisface tus necesidades, ¡genial! @Fernando Miguelez: ¡gran sugerencia! ¡Gracias por compartir! Aquí hay otro enlace: http://www.javaworld.com/javaworld/jw-02-2008/jw-02-opensourcejava-jna.html – paulsm4

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 desordenado de la placa de la caldera.

2

He utilizado JNA antes para interfaces simples y era lo suficientemente simple y elegante. Sin embargo, se recomienda que si hay una interfaz compleja, es mejor usar SWIG.

Hay algunas buenas respuestas que comparan SWIG con JNI y JNA. Sin embargo, hace un tiempo que se planteó la pregunta.

SWIG vs JNI and JNA

1

JNA puede utilizarse en lugar de JNI.

Todo lo que necesita es descargar el tarro JNA (https://github.com/java-native-access/jna#download) ¿Qué se debe incluir en su proyecto Java.

Debe indicar la ubicación de su biblioteca C++ en las propiedades de su proyecto.

  • proyecto clic derecho
  • Run
  • En VM opciones incluyen este Djava.library.path = "C: su DLL ubicación".

Visite este sitio para obtener 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)