将一个没有全局的表从 lua 返回到 C

returning a table no global from lua to C

本文关键字:lua 返回 全局 一个      更新时间:2023-10-16

我在C语言中有一个叫做GetParameter的方法。我想从Lua使用它。此方法将再次向 Lua 返回一些值。

我用 C 构建表的方式是最常见的方式:

lua_newtable(L);
for (int i = 0; i < parameters; i++)
{
    lua_pushnumber(L,i);
    lua_pushstring(L,myParameter);
    lua_settable(L,-3);
}

在我看到的所有示例中,在此之后,您必须使用 lua setGlobal 设置结果表:

 //set name for the result
 lua_setglobal(ptLuaState, "resultTable");

使用此方法,我可以访问lua中的结果表,如下所示:

GetParameter("V111","V111Parameter")
printTable(resultTable);

这样做一切都很顺利,但是,还有另一种方法可以在不使用 setglobal 的情况下做到这一点?我尝试做这样的事情:

local mytable=GetParameter("V111","V111Parameter");

但不起作用。使用全局变量更好?如何在不设置全局的情况下获取结果表?

提前感谢!

不要调用 setglobal 并从 C 函数返回 1。这告诉 lua 你的函数有 1 个返回值,你的最后一个示例就可以工作了。