Я хочу, чтобы вызвать Java привязок моего C++ класс так:Вызов функции JNI из константный метод
std::streamsize DataStreamJava::length() const {
jmethodID m = jni()->GetMethodID(j_dataStream_class_,
"length", "()J");
return jni()->CallLongMethod(j_dataStream_global_, m);
}
Но это не представляется возможным, так как эти JNI звонки не Уст.
Предоставляет ли JNI функции const для методов const? Исключает ли атрибуты const единственный способ решить эту проблему?
По какой-то причине у вас есть 'const JNIEnv *'? Зачем? –
Чтобы расширить комментарий @TavianBarnes: вы можете держать указатель на 'JNIEnv' в своем объекте, но у вас нет никакого контроля над' JNIEnv', он не принадлежит вашему объекту или классу. Поэтому вполне законно объявлять его ** изменчивым **. –