繁体   English   中英

用Java返回全局Jobject

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM