C ++ dll中的Lua表

时间:2018-08-31 14:49:07

标签: c++ lua

我的Lua表看起来像这样:

qt={
    bid_number=20;
    ask_number=20;
    bid=table of 20 elements;
    ask=table of 20 elemens;
}

所以#qt=0, 我想将此表发送到C ++ dll并使用其字段。 我该怎么做? 现在,我只能在C ++ dll中使用tbl={a,b,c}这样的表。我是这样的:

static int forLua_SumArray (lua_State* L) {    // Get the length of the table (same as # operator in Lua)
    int n = luaL_len(L, 1);
    double sum = 0.0;

    // For each index from 1 to n, get the table value as a number and add to sum
    for (int i = 1; i <= n; ++i) {
      lua_rawgeti(L, 1, i);
      sum += lua_tonumber(L, -1);
      lua_pop(L, 1);
    }

    lua_pushnumber(L, sum);
    return 1; 
}

请帮助我开始使用更复杂的表。

2 个答案:

答案 0 :(得分:0)

过去,我曾使用sol2 https://github.com/ThePhD/sol2使Lua / C ++接口的复杂性更加简单。

迈克

答案 1 :(得分:0)

将给定可接受索引处的Lua值转换为C字符串。 Lua值必须是字符串或数字,否则,该函数将返回null。

const char *lua_tolstring (lua_State *L, int index, size_t *len);

然后lua_tostring还将堆栈中的实际值更改为字符串。 luaL_checkstring呼叫lua_tolstring