Я хочу знать, как передать ссылку на объект Java в LuaPassing Java объект Ссылка на Lua
Есть lua_newuserdata эквивалент в Lua Java Binding? Я использую библиотеку jnlua.
После создания newuserdata, как передать его lua, используя openlib в java?
Я хочу знать, как передать ссылку на объект Java в LuaPassing Java объект Ссылка на Lua
Есть lua_newuserdata эквивалент в Lua Java Binding? Я использую библиотеку jnlua.
После создания newuserdata, как передать его lua, используя openlib в java?
Я думаю, luaState.pushJavaObject(Object)
и luaState.pushJaveObjectRaw(Object)
- это методы, которые вы ищете :) К сожалению, я не вижу этого документально, и это не так ясно из источников, по крайней мере для меня.
EDIT: Да, это так. Посмотрите этот код с ./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);
}