2010-12-27 4 views
5

Por lo que entiendo, SWIG es para envolver C++/C para que aparezca en Java, y javah es implementar ciertas funciones java en C++ (también conocidas como funciones nativas).
¿Existe una herramienta que puede crear un contenedor de C++ más de una clase Java, por lo que la persona que llama. de esta C++ envoltorio no tiene que preocuparse acerca de Java, por ejemplo
de entrada Java esherramienta para generar C++ wrapper sobre clase java

class hw { 
    public void hi() { 
     System.out.println("Hello World"); 
    } 
    } 

salidas Herramientas hw.hh (y algunos. C++ archivos), que puede ser utilizado como :

hw * h = new hw (/ * JEnv */env);
h-> hi();

¿Hay alguna herramienta disponible que pueda hacer esto?

+0

¿Espera que este contenedor aloje una máquina virtual java? Eso no es trivial. –

+0

@Bgen Voigt: De lo que he leído, creo que es mucho código repetitivo .. puede ser no trivial, pero algo que puede ser hecho por la herramienta. Todas las herramientas existentes están orientadas hacia el uso de Java como framework, y el código de C++ como library ... estaba tratando de hacer lo opuesto ... java como libraray, que C++ llamará como y cuando sea necesario. .. Tengo la sensación de que este tipo de herramienta se puede hacer usando java reflection api! – vrdhn

Respuesta

4

Las opciones incluyen, las siguientes, en orden ascendente de gasto para usted.

  • Escrito a mano JNI código escrito por clientes de su clase Java.
  • , envoltorios impulsadas en JNI escritas a mano escritos por usted para los clientes de la clase.
  • JACE -capturas generadas. JACE es una herramienta gratuita. La última versión fue en 2008; no estoy seguro de si el desarrollo continúa.
  • JunC++ion -capturas generadas. Esta biblioteca comercial produce los mejores resultados con el menor esfuerzo de desarrollo. Admite callbacks de Java, con clases de C++ que implementan interfaces de Java. El autor es muy receptivo y un tipo muy agradable. Sin embargo, hay una etiqueta de precio, y querrá estar seguro sobre los costos de implementación.
2

He utilizado este producto hace mucho tiempo, http://www.codemesh.com/products/junction/

Lo hará exactamente lo que quiere.

Solo un descargo de responsabilidad, lo utilicé hace casi 6 años. No estoy afliado con este producto.

+0

. Parece que el sitio no funciona ... pero es bueno saber que soy el único que tiene el problema (-: – vrdhn

Cuestiones relacionadas