5
而不是使用lua_CFunction簽名寫入方法從Lua調用,我想使用我自己的函數簽名,簡化了導出過程。註冊與Lua關閉
void foo(call_t *call)
{
int a;
char *b;
char *c;
table_t *d;
/* reading arguments */
a = read_integer(call);
b = read_string(call);
/* do something... */
/* writing arguments */
write_string(call, c);
write_table(call, d);
}
/* export to Lua */
export("foo", foo);
到目前爲止,所有我能想到做的是有一個調用從表包裝功能的單一lua_CFunction。但是,我不知道如何將Lua函數與C函數和表索引相關聯,以便有效地使Lua函數關閉。類似這樣的:
lua_register_with_data(state, "foo", base_function, FOO_INDEX);
我該如何做到這一點?
您可以通過推送實際數據來消除'table':lua_pushlightuserdata(L,(const void *)foo)'。然後用'function_t foo = lua_topointer(L,i)'取回它。 – user3125367
+1好的解決方案謝謝發佈 – Schollii