[英]should I DeleteGlobalRef if the jobject is returning from JNI to JAVA?
[英]Returning a global jobject in Java
我有两个JNI函数。 第一个允许程序员将任意Java对象传递给C ++:
void Java_org_love_Lua_pushLightUserdata( JNIEnv* env, jobject javaThis, jlong state, jobject value )
{
jobject* objectRef = lua_newuserdata( (lua_State*)state, sizeof( jobject ) );
*objectRef = (*env)->NewGlobalRef( env, value );
}
然后有另一个检索此对象:
jobject Java_org_love_Lua_toUserdata( JNIEnv* env, jobject javaThis, jlong state, jint index )
{
jobject obj = *(jobject*)lua_touserdata( (lua_State*)state, (int)index );
return obj;
}
但是,由于某种原因,此函数始终向Java返回空值。 我知道jobject本身很好,因为我还将这种方法用于回调函数。 不过,这是我第一次真正尝试返回对象。 我究竟做错了什么?
因为您不是返回精心创建的全局引用,而是返回一个陈旧的本地引用?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.