我有一个小的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));
}
print的输出总是0。如果我放入(i+1),输出总是1。我无法改变AUp的值。该值保持不变,就像第一次调用lua_pushnumner和lua_setglobal时一样。问题出在哪里?这个函数应该被反复调用,但是AUp的值可以改变,所以在调用lua_call之前必须更新它。
assert(lua_tonumber(L,-1)== i);
?设置后检查AUp
呢?例如:lua_getglobal(L,“AUp”); assert(lua_tonumber(L,-1)== i);
- greatwolf