如何从C++中读取Lua表的返回值

我有一个 Lua 函数,返回一个包含字符串集合的表格。使用以下代码函数正常运行:

lua_pushstring (lua, "funcname");
lua_gettable   (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);

该函数返回一个表格。如何从我的 C ++ 代码中读取它的内容?

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

点赞
stackoverflow用户312586
stackoverflow用户312586

如果该函数没有抛出任何错误,那么 lua_pcall 将会执行以下操作:

  1. 从栈中删除参数
  2. 把结果推到栈上

这意味着,如果您的函数没有抛出任何错误,您可以立即使用 lua_setfield - lua_pcall 的工作方式就像 lua_call 一样:

lua_pushstring (lua, "funcname");
lua_gettable   (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
lua_setfield(L, LUA_GLOBALSINDEX, "a");        /* set global 'a' */

等价于:

a = funcname(someparam)
2010-10-19 15:52:50
stackoverflow用户169828
stackoverflow用户169828

如果你想知道如何遍历生成的表,你需要使用 lua_next (这个链接也包含一个例子)。正如 egarcia 所说,如果 lua_pcall 返回 0,则函数返回的表可以在栈顶找到。

2010-10-19 17:37:58