Возврат jstring в программе JNI
Это код JNI.
Код 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);
}
}
Cpp Метод для функции stringMethod:
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;
}
При запуске моего java-кода. Я получил результат ниже.
stringMethod: world
Но я добавил строку "world" в "Hello". Я также возвращаю сюда добавленную строку. Но почему я получаю только "мир", а не "Hello World". На самом деле я смутил этот код. Что мне делать, чтобы получить результат с добавленной строкой?
Ответы
Ответ 1
это должен быть способ сделать это....
JNIEXPORT jstring JNICALL Java_Sample1_stringMethod
(JNIEnv *env, jobject obj, jstring string) {
const char *name = (*env).GetStringUTFChars(env,string, NULL);
char msg[60] = "Hello ";
jstring result;
strcat(msg, name);
(*env).ReleaseStringUTFChars(env,string, name);
puts(msg);
result = (*env).NewStringUTF(env,msg);
return result;
}