Appelez un programme C depuis java avec JNA
Xavier MARIN
Non classé
Et oui, on peut appeler nativement une lib C, C++ Rust ou Go directement en Java grâce à JNA.
En fait c’est facile.
D’abord, il faut une lib en C. Par exemple en voici une :
helloworld.h
char *hello(char* ch); |
helloworld.c
|
Hey, mais, il y a un malloc sans free, ça craint. Bon, pas de soucis, on verra plus loi comment faire un free après l’appel.
Ok, maintenant, on compile :
gcc -c helloworld.c |
Maintenant, la partie Java. Il faut avoir la lib JNA dans son classpath, bien évidement.
CHelloWorld.java
package io.warp10.ext.test; |
Test.java
public class Test { |
On compile :
javac -cp ./jna-5.10.0.jar ./*.java |
On exécute :
java -cp /opt/jna-5.10.0.jar:./* mon.package.Test Kitty |
Et voilà.