Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回Java中的全局jobject_Java_C++_Java Native Interface - Fatal编程技术网

返回Java中的全局jobject

返回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

我有两个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本身是好的,因为我也将此方法用于回调函数。不过,这是我第一次尝试返回对象。我做错了什么?

因为您没有返回精心创建的全局引用,而可能是一个长期过时的本地引用?

因为您没有返回精心创建的全局引用,而可能是一个长期过时的本地引用?

哦,我的上帝。我刚经过的物体还没有初始化……天哪。我首先传递的对象尚未初始化。。。。。。