2010-06-08 16 views
7

Estoy tratando de invocar C++ desde Java usando GCJ usando el CNI, hasta ahora puedo invocar el código Java desde C++. ¿Cómo puedo invocar C++ desde Java usando el CNI?Invocando código C++ de Java (GCJ)

Respuesta

4

me extiendo un poco sobre la respuesta de pcent para leer el GCJ/CNI Docs.

Creo que la clave está en comprender todo el concepto de "clase CNI C++".

  • La creación de una clase CNI C++ se explica en that page.
  • Puede llamar al código Java de una clase CNI C++ (siempre que haya generado archivos de encabezado): eso es lo que ya hace (llamando a Java desde C++).
  • El punto clave es que los métodos CNI C++ pueden invocarse desde Java (porque estas clases tienen un conjunto de restricciones para hacerlos compatibles con Java). Y debido a que la clase CNI es solo una clase (particular) de la clase C++, también puede vincularla a otras bibliotecas del mismo modo que vincularía cualquier clase de C++.

La mayor parte de documentation describe cómo se traducen las convenciones de Java en una clase CNI C++.

-1

No soy un buen programador de Java, pero estoy familiarizado con C#/C++ interoperabilidad. La mejor solución para llamar desde C++ nativo a C# administrado era usando Callbacks. Creo que esto se aplica también a JNI

lectura Probar: http://www.tidytutorials.com/2009/07/java-native-interface-jni-example-using.html

+2

La cuestión no estaba a punto de JNI - se trataba de CNI, que es una bestia completamente diferente. –

Cuestiones relacionadas