那麼不存在任何問題推C函數作爲函數成員或與lua_register(L,lua_func_name,c_func)寄存器C的功能LUA功能;推LUA函數從C API表構件
但如何告訴盧阿什麼,我想通過luaFoo()作爲回調函數參數有關從C「foober」? lua_pushcfunction - 推C函數,lua_pushstring推動只是一個普通的字符串,所以回調場成了字符串,而不是功能。
Lua代碼:
CALLBACKS = {};
FOO = 0;
function luaFoo()
FOO = FOO + 1;
end;
function addCallback(_name, _callback)
CALLBACKS[_name] = _callback;
end;
function doCallback(_name)
CALLBACKS[_name]();
end;
C代碼:
static int c_foo(lua_State* l)
{
printf("FOO\n");
return 0;
}
/*load lua script*/;
lua_State* l = /*get lua state*/;
lua_getglobal(l, "addCallback");
lua_pushstring(l, "foober");
//What push for luaFoo()
lua_pushcfunction(l, c_foo);
lua_call(l, 2, 0);
lua_getglobal(l, "doCallback");
lua_pushstring(l, "foober");
lua_call(l, 1, 0);
Similiar - 如果我得到它已經與lua_register,如何將它們傳遞來自C.於是我們回調PARAM註冊的C函數註冊c_foo爲LUA功能,如何告訴我們想通過「c_foo」回調FUNC PARAM => c_foo存在。