我在过去的6个小时里一直在努力解决这个问题!我哪儿也去不了。
我希望能够在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++成功地调用这些函数。
有人能帮我解决这个错误吗?这能是卢阿的虫子吗?我很正确地遵循了这些步骤.我想!
发布于 2012-05-20 02:55:15
函数必须位于堆栈的第一位,在args之前。
你可以:
lua_getglobal(L,"MTable");堆栈上的...generate表int = lua_pcall(L,1,0,0);
堆栈上的...generate表..。lua_getglobal(L,"MTable");lua_insert (L,-2);//交换表和函数按正确顺序排列,使pcall结果= lua_pcall(L,1,0,0);
https://stackoverflow.com/questions/10670094
复制相似问题