我在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); // 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);