Passage d'un argument en entrée/sortie avec JNI
Bonjour,
Je fais mes premiers pas avec JNI et j'ai donc utilisé le tutoriel de JM Doudoux.
J'ai donc implémenté la méthode ajouter, seulement, je souhaiterai passer le résultat en entrée/sortie.
Tout compile bien sauf que mon addition ne se fait pas :?
Je vous joins mes différents code ainsi que mes résultats à la console. J'ai besoin de passer des paramètres en entrée/sortie (retourner plusieurs valeurs) pour une implémentation sur des méthodes plus sophistiquées. j'ai donc voulu commencer par tester sur un exemple simple...
J'utilise NetBeans 6.9 et JDK 1.6.0_20
Merci pour votre aide !
Ma classe java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package testjni1;
public class TestJNI1 {
public native void ajouter(int a,int b,int c);
static {
System.load("mabibjni.dll");
}
public static void main(String[] args) {
TestJNI1 maclasse = new TestJNI1();
int a,b,c;
a=3;
b=2;
c=0;
System.out.println("a = " + a);
System.out.println("b = " + b);
maclasse.ajouter(a,b,c);
System.out.println("from C Code a+b = c = " + c);
c=a+b;
System.out.println("from Java Code a+b = c = " + c);
}
} |
Ma librairie dynamique C
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| #include <jni.h>
#include <stdio.h>
#include "TestJNI1.h"
JNIEXPORT void JNICALL Java_testjni1_TestJNI1_ajouter
(JNIEnv *env, jobject obj, jint a, jint b, jint c)
{
c = a + b;
} |
Mes résultats à la console
Code:
1 2 3 4 5 6
| run:
a = 3
b = 2
from C Code a+b = c = 0
from Java Code a+b = c = 5
GÉNÉRATION TERMINÉE (durée totale* 0 secondes) |