【发布时间】:2015-10-21 13:31:18
【问题描述】:
我想这样调用我的 C++ 类的 Java 绑定:
std::streamsize DataStreamJava::length() const {
jmethodID m = jni()->GetMethodID(j_dataStream_class_,
"length", "()J");
return jni()->CallLongMethod(j_dataStream_global_, m);
}
但这是不可能的,因为这些 JNI 调用不是 const。
JNI 是否为 const 方法提供 const 函数?删除 const 属性是解决此问题的唯一方法吗?
【问题讨论】:
-
由于某种原因你有
const JNIEnv*吗?为什么? -
扩展@TavianBarnes 的评论:您可以在对象中保留指向
JNIEnv的指针,但您无法控制JNIEnv,它不属于您的对象或类。因此,将其声明为 mutable 是完全合法的。
标签: java android c++ java-native-interface