传递java对象引用Lua

时间:2013-09-11 10:38:10

标签: lua luajava

我想知道如何将Java Object引用传递给Lua

Lua Java Binding中是否有lua_newuserdata等效?我正在使用jnlua库。

创建newuserdata之后如何使用java中的openlib将其传递给lua?

1 个答案:

答案 0 :(得分:1)

我认为luaState.pushJavaObject(Object)luaState.pushJaveObjectRaw(Object)是您正在寻找的方法:)可悲的是,无法看到这些记录,而且从来源来看并不是那么清楚,至少对我而言。

编辑: 是的,是的。请查看./main/c/jnlua.cjnlua sources)

中的此代码段
/* ---- Java objects and functions ---- */
/* Pushes a Java object on the stack. */

static void pushjavaobject (lua_State *L, jobject object) {
    jobject *user_data;

    user_data = (jobject *) lua_newuserdata(L, sizeof(jobject));
    luaL_getmetatable(L, JNLUA_OBJECT);
    *user_data = (*thread_env)->NewGlobalRef(thread_env, object);
    if (!*user_data) {
            lua_pushliteral(L, "JNI error: NewGlobalRef() failed pushing Java object");
            lua_error(L);
    }
    lua_setmetatable(L, -2);
}