Cara, fui fazer um teste aqui usando esse tutorial: https://blog.caelum.com.br/escrevendo-metodos-nativos-em-java-com-jni-e-jna/, e consegui rodar numa boa. A única coisa que não achei nesse tutorial, é que, quando vai fazer o loadLibrary, o arquivo compilado (no meu caso o .so) tem que está na raiz da pasta src do projeto (bom, para funcionar aqui comigo, precisei fazer assim).
Ah, outra coisa. O teste que funcionou foi usando JNA e tive que usar o prefixo lib no meu arquivo nativo (libCalculadora.so). E a lib JNA que usei foi:
Você não declarou certo os parâmetros do tipo out.
Olha como é a definição do assinar segundo o link que você passou:
string Assinar(
string XMLString,
string RefUri,
string NomeCertificado,
out int resultado, // out int é IntByReference no JNA
out string msgResultado // out string é StringByReference no JNA
)