Übergeben Sie dabei die Parameter per Referenz von c++ zu java über jni

Ich bin versucht, übergeben Sie eine variable von c++ zu java-pro Referenz, die über JNI. Für den Anfang hab ich versucht, es mit einigen einfachen code:

Java

public static void inc(int val) {
  System.out.println("inc called: " + val);
  val++;
}

public static void dec(int val) {
  System.out.println("dec called: " + val);
  val--;

}

Diese sollte einfach in-/Dekrementieren einer Variablen erstellt, die in c++ - code mit einem Java-Methode.
Der c++ - Teil sieht wie folgt aus:

C++

jmethodID jDec = env->GetStaticMethodID(cls, "dec", "(I)V");
jmethodID jInc = env->GetStaticMethodID(cls, "inc", "(I)V");

jint val = 10;

printf("%d\n", val);
env->CallStaticVoidMethod(cls, jDec, &val);
printf("%d\n", val);
env->CallStaticVoidMethod(cls, jInc, val);
printf("%d\n", val);

Wie Sie sehen, ich habe versucht, sowohl per Referenz und per Wert.

Ausgabe

10
dec called: -401031272
10
inc called: 10
10

Innerhalb der c++ - code, der Wert ist die ganze Zeit 10, in Java ist es entweder die Adresse oder der Wert.

Wäre schön, wenn könnten Sie mir einen Tipp geben, vielen Dank im Voraus.

  • Dieser code muss nicht einmal Sinn machen nur als reines C++. Dies ist nicht, wie die Funktionen arbeiten.
  • Dieser code muss nicht einmal Sinn machen nur als Reine Java. Dies ist nicht, wie die Parameter arbeiten.
InformationsquelleAutor sosnet | 2014-07-24
Schreibe einen Kommentar