Bom dia galera!
Nesta última semana estou estudando o tempo todo Java -> DLL JNI -> DLL. Fiz muitos progressos. Estou conseguindo passar parâmetros e receber retorno de funções da DLL.
Só que nem tudo são flores…
Na minha DLL tem um método com a seguinte assinatura:
EXPORT void swap(int*, int*);
Como vcs podem ver as duas variáveis são passadas por referência. Essa função faz o seguinte:
int a =3; int b=2;
printf("antes da troca a=%d b=%d",a,b); //antes da troca a=3 b=2
swap(a,b);
printf("depois da troca a=%d b=%d",a,b); //antes da troca a=2 b=3
Agora vem o problema:
A assinatura do meu método em Java é:
public native void swap(int a, int b);
E sabendo que valores primitivos são passados por valor, como faço para obter o mesmo comportamento que obtenho em C++?
Obs: Já troquei a assinatura por swap(Integer a, Integer b) e simplesmente não houve a troca, ou seja, o JNI passou a cópia do valor e não da referência.

