Как получить значение String в C ++ из метода Java с использованием JNI - PullRequest
0 голосов
/ 09 декабря 2018

В моем классе Java есть метод, который возвращает строку.Подпись метода current () Ljava / lang / String;Я мог бы создать идентификатор класса и метода с JVM в моем родном вызове.Сделали GetStaticMethodID и т.д ... все в порядке.

Как вызвать этот метод?например: env-> CallIntMethod () env-> CallCharMethod () .... какой вариант вернуть строку?

В C ++ мне нужно скопировать это строковое значение, восстановленное этим Java-методом.Примечание: я могу изменить сигнатуру метода в банке, если это необходимо.Или можете добавить другой метод, чтобы обернуть другой.

1 Ответ

0 голосов
/ 09 декабря 2018

Метод, который возвращает строку Java, должен называться

jstring js = static_cast<jstring>(env->CallObjectMethod(jobj, mId));

Теперь вы можете использовать

const char *cstr = env->GetStringUTFChars(js, nullptr);

Не забудьте освободить строку после использования:

env->ReleaseStringUTFChars(js, cstr);

Может потребоваться освободить локальную ссылку на Java,

env->FreeLocalReference(js);
...