Interfaz Ada Dynamic Library con Java usando JNA y los paquetes Ada's Interface.C
Tengo que escribir una DLL que se supone que proporciona un servicio simple que requiere:
EN una cadena o matriz de bytes (equivalente de char *)IN entero que explota el tamaño de in char *IN equivalente al búfer char * utilizado por la biblioteca para escribir datos enTamaño IN del buffer char * disponible para escrituraOUT tamaño escrito efectivo en el buffer out char *Usando un punto de vista C, la firma debería verse así:
void myService (char* inBuffer, // as in string
int anInteger, // as in param
char* outBuffer, // used as out buffer, but initalized by calling code
int outBufferSize, // the initaliaed size
int usedBufferSize // used as out param, the actually used size
);
La biblioteca se elige para que se codifique en Ada por varias razones (varios paquetes de Ada reutilizan que no queremos codificar nuevamente ni rediseñar (legado)). Se supone que la biblioteca se debe usar en un proyecto Java (y no queremos recodificar desde el lado Java los servicios proporcionados por lib). (La razón principal de esto es que la biblioteca oculta la conversión compleja de tipos de Ada a JSON + una biblioteca de protocolos).
La biblioteca también debe interactuar con C o C ++ en el futuro, por lo que la idea principal es confiar en tipos básicos.
¿Cómo se puede hacer la interfaz con C y Java al mismo tiempo?
(Encontré una solución, así que quería compartir los detalles a continuación; vea mi propia respuesta.No se pudo hacerlo usando la casilla de verificación debido a que el navegador web del lugar de trabajo anterior tenía muchos errores ...)