Dúvida passagem de parametros Java e C

Bom dia galera,estou tentando mapear um Struct do C para uma classe Java mas estou enfrentando uma pequena dificuldade.

Código C:

typedef struct pessoa {
int idade;
} Pessoa;

int retorno(Pessoa p){
  return p.idade;
}

ProxyJava:

public interface IClasse extends Library {
 
	 public static class Pessoa extends Structure{
		 public static class ByValue extends Pessoa implements Structure.ByValue { }
		    public int nome;
	 }
	 
	 int retorno(Pessoa p);
}

Classe Java:

public class TesteClasse {

	 public static void main(String[] args) throws ClassNotFoundException {
		 IClasse iclasse = (IClasse) BibliotecaUtil.carregaBiblioteca("IClasse", "classe.dll");
	     IClasse.Pessoa.ByValue p = new IClasse.Pessoa.ByValue();
	     p.nome = 30;
	     IClasse.Pessoa pessoa = new IClasse.Pessoa();
	     int x = iclasse.retorno(p);
	     System.out.println(x);
	 }
}

Retorno:48637264

Onde pode estar esse erro?

Esse trecho está incorreto.

int retorno(Pessoa p);

Deveria ser:

int retorno(Pessoa.ByValue p);