jstring retour dans JNI programme
C'est JNI code.
De code Java:
public class Sample1 {
public native String stringMethod(String text);
public static void main(String[] args)
{
System.loadLibrary("Sample1");
Sample1 sample = new Sample1();
String text = sample.stringMethod("world");
System.out.println("stringMethod: " + text);
}
}
Rpc Méthode pour stringMethod fonction:
JNIEXPORT jstring JNICALL Java_Sample1_stringMethod
(JNIEnv *env, jobject obj, jstring string) {
const char *name = env->GetStringUTFChars(string, NULL);//Java String to C Style string
char msg[60] = "Hello ";
jstring result;
strcat(msg, name);
env->ReleaseStringUTFChars(string, name);
puts(msg);
result = env->NewStringUTF(msg); //C style string to Java String
return result;
}
Lors de l'exécution de mon code java. J'ai obtenu le résultat ci-dessous.
stringMethod: world
Mais j'ai ajouté la chaîne "monde" avec "Bonjour ". Je suis également de retour ici, joints en annexe de la chaîne. Mais pourquoi je suis la seule "monde" et non pas "Hello World". Vraiment j'ai confondu avec ce code. Que dois-je faire pour obtenir le résultat avec ajouté chaîne?
- Le problème est ailleurs, votre concaténation est parfaitement valide: codepad.org/WWR4LzfV
Vous devez vous connecter pour publier un commentaire.
ce devrait être la façon de le faire....
(*env)->NewStringUTF(...)
êtreenv->NewStringUTF(...)
?env
des fonctions en c, l'instruction est(*env)->Function(env, parameters)
. Cependant, en c++, il se tourne vers:env->Function(parameters)
.