返回Java中的全局jobject
我有两个JNI函数。第一个允许程序员将任意Java对象传递给C++:返回Java中的全局jobject,java,c++,java-native-interface,Java,C++,Java Native Interface,我有两个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)->N
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本身是好的,因为我也将此方法用于回调函数。不过,这是我第一次尝试返回对象。我做错了什么?因为您没有返回精心创建的全局引用,而可能是一个长期过时的本地引用?因为您没有返回精心创建的全局引用,而可能是一个长期过时的本地引用?哦,我的上帝。我刚经过的物体还没有初始化……天哪。我首先传递的对象尚未初始化。。。。。。