我想知道如何将Java Object引用传递给Lua
Lua Java Binding中是否有lua_newuserdata等效?我正在使用jnlua库。
创建newuserdata之后如何使用java中的openlib将其传递给lua?
答案 0 :(得分:1)
我认为luaState.pushJavaObject(Object)
和luaState.pushJaveObjectRaw(Object)
是您正在寻找的方法:)可悲的是,无法看到这些记录,而且从来源来看并不是那么清楚,至少对我而言。
编辑:
是的,是的。请查看./main/c/jnlua.c
(jnlua 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);
}