【发布时间】:2016-10-20 03:32:19
【问题描述】:
我与 Lua 打交道的时间更长,但有一点我无法实现。 在从 Lua 调用的 C 函数中,我可以使用如下表名读取全局 Lua 表:
C:
// get table
lua_getglobal(L, "tableName");
if (!lua_istable(L, -1))
break;
// count entries in table
ULONG numEntries = 0;
lua_pushnil(L);
while(lua_next(L,-2))
{
numEntries++;
lua_pop(L, 1);
}
但是如果我有一个像这样调用 C 函数的 lua 函数:
Lua:
luaTable = { }
luaTable.Param1 = Value1
luaCallC("This is a Text", luaTable)
如何访问 table 参数?
C:
// get table
// ???
// count entries in table
ULONG numEntries = 0;
lua_pushnil(L);
while(lua_next(L,-2))
{
numEntries++;
lua_pop(L, 1);
}
【问题讨论】:
-
它在堆栈上。请阅读manual,因为堆栈是 C API 工作方式的基础。 Programming in Lua 有使用示例。