Я хотел бы создать простую функцию, которая возвращает значение двух строк.
в основном:
java
public native String getAppendedString(String name);
c
jstring Java_com_example_hellojni_HelloJni_getAppendedString(JNIEnv* env, jobject thiz, jstring s) {
jstring sx = (*env)->GetStringUTFChars(env, s, NULL);
return ((*env)->NewStringUTF(env, "asd ")+sx);
}
свое слово
jni / hello-jni.c: 32: предупреждение: инициализация отбрасывает квалификаторы из целевого типа указателя jni / hello-jni.c: 34: ошибка: недопустимые операнды для двоичного + (есть 'char *' и 'char *')
ответ будет: "asd qwer", как я могу это сделать?
edit
jstring s1 = (*env)->NewStringUTF(env, "456");
jstring s2 = (*env)->NewStringUTF(env, "123");
jstring sall=strcat(s1, s2);
return sall;
только возврат "456"
отредактировано # 3 ПОСЛЕДНИЕ
окончательный рабочий код:
jstring Java_com_example_hellojni_HelloJni_getAppendedString(JNIEnv* env, jobject thiz, jstring s1) {
D("HMMMMMMMMMMMMMMMMMMM");
jstring s2 = (*env)->NewStringUTF(env, "123");
jbyte *s1x = (*env)->GetStringUTFChars(env, s1, NULL);
jbyte *s2x = (*env)->GetStringUTFChars(env, s2, NULL);
char *sall = malloc(strlen(s1x) + strlen(s2x) + 1);
strcpy(sall, s1x);
strcat(sall, s2x);
jstring retval = (*env)->NewStringUTF(env, sall);
(*env)->ReleaseStringUTFChars(env, s1, s1x);
(*env)->ReleaseStringUTFChars(env, s2, s2x);
free(sall);
return retval;
}
Спасибо, Лесли