我已经花费了过去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的一个bug吗?因为我按照步骤做得非常正确...我猜!