我的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;
}
请帮助我开始使用更复杂的表。
答案 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
。