【发布时间】:2012-05-27 01:24:47
【问题描述】:
过去 6 个小时我一直在尝试解决这个问题!我无法到达任何地方:s
我希望能够在 c++ 文件中创建一个 lua 表,然后将其传递给一个 lua 脚本文件,该文件具有以下 lua 函数:
function MTable (t)
local n=#t
for i=1,n do
print(t[i])
end
end
我动态创建了一个包含两个字符串的一维数组:
lua_newtable(L);
lua_pushstring(L,"10.10.1.1");
lua_pushstring(L,"10.10.1.2");
lua_rawseti(L,-3,2);
lua_rawseti(L,-2,1);
所以现在我将桌子放在堆栈顶部。 我已经通过写这个来验证它: if( lua_istable(L,lua_gettop(L)))` 返回1,表示它是一个表。
然后我这样做了:
lua_getglobal(L, "MTable"); // push the lua function onto the stack
uint32_t result = lua_pcall(L, 1, 0, 0); //argument 1 is for the table
if (result) {
printf(stderr, "Failed to run script: %s\n", lua_tostring(L, -1));
exit(1);
}
所以我得到了那个错误: 运行脚本失败:尝试调用表值
请注意,该文件还有我从 c++ 成功调用的其他几个函数。
有人可以帮我解决这个错误吗?这可能是LUA的错误吗? cz 我非常正确地遵循了这些步骤......我猜!
【问题讨论】:
-
这已在 Lua 邮件列表中被询问和回答。