J'ai le code suivant dans un très simple exemple JNI (Java + C)séquence de pile JNI malentendu
Java
package jnitest;
public class JNITest {
static {
System.load("C:/.../JNItestNative.dll");
}
public native void hello();
public static void main(String[] args) {
JNITest jniTest = new JNITest();
System.out.println("Hello in java");
jniTest.hello();
System.out.println("Bye in java");
}
}
C
/*
* File: jnitestnative.c
* Author: DEFAULT
*
* Created on February 17, 2012, 12:24 PM
*/
#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
/*
*
*/
JNIEXPORT void JNICALL Java_jnitest_JNITest_hello
(JNIEnv *env, jobject obj) {
printf("Hello in C\n");
printf("Bye in C\n");
return;
}
Je pense que le résultat à être comme ceci:
Hello in Java
Hello in C
Bye in C
Bye in Java
Mais il est vraiment comme ça:
Hello in java
Bye in java
Hello in C
Bye in C
Peut-être que 'tampons System.out.println' quelque part différents que' printf'? Essayez d'écrire sur autre chose (comme un fichier)? –
A l'origine, je faisais face à ce problème quand je changeais la taille d'un caractère passé [] non seulement en écho à la console! – ehsun7b
@JamesMcLaughlin Vous avez raison, le résultat dans un fichier texte est comme prévu, mais pouvons-nous avoir un tel problème lorsque nous manipulons les objets Java en C ??? – ehsun7b