推动一个 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 ]

原文链接 https://stackoverflow.com/questions/3987837

点赞
stackoverflow用户107090
stackoverflow用户107090

这个表已经在堆栈中,就像 lua_newtable 把它留下的一样,不是吗?

2010-10-21 13:30:25
stackoverflow用户30470
stackoverflow用户30470

下面是一个快速的帮助函数,可将字符串推入表格中

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

这里我使用帮助函数创建了一个表格并将其传递给一个函数:

// 创建一个 Lua 函数
luaL_loadstring(L, "function fullName(t) print(t.fname,t.lname) end");
lua_pcall(L, 0, 0, 0);

// 将函数压入栈中
lua_getglobal(L, "fullName");

// 在 C 语言中创建一个表格(它将位于栈顶)
lua_newtable(L);
l_pushtablestring(L, "fname", "john");
l_pushtablestring(L, "lname", "stewart");

// 带一个参数调用函数
lua_pcall(L, 1, 0, 0);
2010-10-21 14:13:34
stackoverflow用户145077
stackoverflow用户145077

我开源了一个小的代码片段,可以解决在 C 语言向 Lua 语言传递简单 Lua 字典表的问题。

您可以在 这里 查看它,并且它应该运行良好。

2012-07-22 03:46:39