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