3

我想从 C 函数中获取 Lua 中的几个参数。我试图在 lua 堆栈上推送几个参数:

static int myFunc(lua_State *state)
{
    lua_pushnumber(state, 1);
    lua_pushnumber(state, 2);
    lua_pushnumber(state, 3);

    return 1;
}

并像这样在 Lua 中调用它:

local a,b,c = myFunc()

不幸的是 b 和 c 值为零。我不想为我需要的每个值编写一个函数,而是利用 Luas 功能从函数中检索多个参数。

4

1 回答 1

6

C 函数的返回值是返回值的个数。

将其更改为return 3;,您就可以开始了。

在这里,参考Programming in Lua

static int l_sin (lua_State *L) {
  double d = lua_tonumber(L, 1);  /* get argument */
  lua_pushnumber(L, sin(d));  /* push result */
  return 1;  /* number of results */
}
于 2013-10-23T14:32:17.607 回答