5
我得到了几个必须在同一个C++对象上工作的JNI函数。我想将该对象保存在通过其调用JNI函数的java对象中,但似乎Java没有办法将函数的指针存储为稍后访问的函数。将C++对象返回给Java
好吧,我意识到,我正在做一个可怕的工作,解释自己,所以这里有一个例子:
void clear_numbers(JNIEnv *env, jobject me) {
me.myCppVector.clear();
}
void set_number(JNIEnv *env, jobject me, jint index, jint num) {
me.myCppVector[index]=num;
}
jint get_number(JNIEnv *env, jobject me, jint index) {
returnme.myCppVector[index];
}
我的问题是建立一个jobject.myCppVector,这样我就可以从不同的使用函数调用。
我希望有人理解我的随笔
也许指针转换为整数,然后整数存入Java对象 – ignis 2011-06-07 19:08:01
的领域是不是被认为是不安全的?另外,在所有平台上,sizeof(jint)是否等于sizeof(void *)? – Afiefh 2011-06-07 19:22:12
我不知道它应该是不安全的任何原因。但是,指针在不同的平台上有不同的大小,而Java的基本类型则不同,当然这意味着您需要将指针映射到Java代码中不同类型的基元 - int为32位,long为64位等。 http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#85587 – ignis 2011-06-07 19:33:06