Interface da biblioteca dinâmica Ada com Java usando JNA e os pacotes Interface.C da Ada

Eu tenho que escrever uma DLL deve fornecer um serviço simples que leva:

EM uma matriz de cadeia de caracteres ou bytes (equivalente a char *)IN inteiro explicitando o tamanho do caractere in *IN equivalente ao buffer char * usado pela biblioteca para gravar dados emTamanho IN do buffer char * disponível para gravaçãoTamanho gravado eficaz OUT no buffer de saída char *

Usando um ponto de vista C, a assinatura deve se parecer com:

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
);

A biblioteca é escolhida para ser codificada no Ada por vários motivos (vários pacotes do Ada reutilizam que não queremos codificar novamente nem reprojetamos (legado)). A biblioteca deve ser usada em um projeto Java (e não queremos recodificar do lado de Java os serviços fornecidos pela lib). (A principal razão para isso é que a biblioteca oculta a conversão de tipos Ada complexos em JSON + uma biblioteca de protocolo.)

A biblioteca também deve estar em interface com C ou C ++ no futuro, portanto, a idéia principal é confiar nos tipos básicos.

Como a interface para C e Java ao mesmo tempo pode ser feita?

(Encontrei uma solução, então queria compartilhar os detalhes abaixo; veja minha própria resposta.Não foi possível fazer isso usando a caixa de seleção devido ao navegador de web antigo no local de trabalho ser muito buggy ...)

questionAnswers(1)

yourAnswerToTheQuestion