我有一个小的Lua脚本:
function g ()
print( AUp);
end
从C我加载脚本,添加一个名为AUp的变量,让它运行几百次。
for( i=0; i<2000; i++)
{
num= i;
lua_pushnumber( L, i);
lua_setglobal( L, "AUp");
lua_getglobal( L, "g");
if (lua_call( L, 0, 0) != 0)
printf( "%s", lua_tostring(L, -1));
}
打印输出始终为0。如果我输入(i + 1),则输出始终为1.我无法更改AUp的值。该值保持不变,就像第一次调用lua_pushnumner和lua_setglobal一样。
有什么问题?该函数应该反复调用,但是AUp的值可以更改,所以我必须在调用lua_call
之前更新它。
答案 0 :(得分:0)
我不确定,但你试过了: 1.在Lua脚本中定义AUp初始值。 2.在C循环期间清理堆栈值。 ?
编辑: 忘记这两点:)
for(i = 0; i<200; i++)
{
lua_pushnumber(l, i);
lua_setglobal(l, "foo");
lua_getglobal(l, "test_f");
if (lua_pcall(l, 0, 0, 0) != 0)
{
printf( "%s", lua_tostring(l, -1));
}
}
和
function test_f()
print(foo)
end
与Lua 5.1.5一起工作得很好
顺便说一句,根据manual - void lua_call (lua_State *L, int nargs, int nresults);
(改为使用lua_pcall()
)。甚至无法使用Lua 5.1.5标头编译您的代码。