2010-09-22 10 views
7

¿Hay alguna buena herramienta para generar Java (+ soporte JN si es necesario) de un archivo de cabecera para que una biblioteca C o C++ pueda ser utilizada tal como está? Tipo de un reverso de javah. La funcionalidad real estaría en C/C++, Java sería solo una cuña para ciertos usuarios.C/C++ header to java

No soy un experto en JNI pero, por lo que puedo ver, Javah te obliga a hacer esto al revés. Te obliga a que los JNI-ismos penetren sin cesar en el código C a menos que tú mismo escribas una capa de conversión. Y escribir una capa de conversión a mano es básicamente una pérdida de tiempo, ya que toda la información está allí en el archivo de encabezado, para empezar.

Respuesta

3

Para C, puede utilizar JNA. Debe declarar las firmas de funciones de forma redundante en Java, pero no tiene que escribir ningún código de pegamento. JNA es muy fácil de usar.

Para C o C++, puede usar SWIG. SWIG es un poco más complejo de usar, pero genera automáticamente envoltorios Java para las clases de C++. Lo estoy disfrutando.

+0

Gracias. Después de leer los documentos un poco. Parece que SWIG es probablemente la solución que necesito usar. – idij

2

Parece que el TRAGO funciona con Java: http://www.swig.org/Doc2.0/Java.html

Tal vez esto no es exactamente lo que está buscando, sin embargo, ya que usted tiene que agregar directivas SWIG ...

+0

SWIG está ahora en la versión 2. Su enlace es 1.3. –

+0

Vaya, solo fui con lo que google me dio. Fijo. –

3

JNAerator hace exactamente eso: se lee C/C++/objectivec encabezados y envía enlaces Java que se basan en BridJ (C/C++), JNA (C solamente) o Rococoa (ObjectiveC, utiliza JNA).