推Lua表

我在C中创建了一个Lua表,但我不确定如何将该表推到堆栈的顶部,这样我就可以将它传递给Lua函数了。

有谁知道如何做到这一点?

这是我目前的代码:

lua_createtable(state, libraries.size(), 0); int table_index = lua_gettop(state); for (int i = 0; i < libraries.size(); i++) { lua_pushstring(state, libraries[i].c_str()); lua_rawseti(state, table_index, i + 1); } lua_settable(state, -3); [ Push other things ] [ Call function ] 

这是一个快速帮助函数,用于将字符串推送到表中

 void l_pushtablestring(lua_State* L , char* key , char* value) { lua_pushstring(L, key); lua_pushstring(L, value); lua_settable(L, -3); } 

在这里,我使用辅助函数来创建表并将其传递给函数

 // create a lua function luaL_loadstring(L, "function fullName(t) print(t.fname,t.lname) end"); lua_pcall(L, 0, 0, 0); // push the function to the stack lua_getglobal(L, "fullName"); // create a table in c (it will be at the top of the stack) lua_newtable(L); l_pushtablestring(L, "fname", "john"); l_pushtablestring(L, "lname", "stewart"); // call the function with one argument lua_pcall(L, 1, 0, 0); 

该表已经在堆栈中, lua_newtable离开了它,不是吗?

我做了一个小片段开源,解决了从C到Lua推送简单的Lua字典表。

你可以在这里查看 ,应该运作良好。