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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)