5

我有一个小的 Lua 脚本:

function g ()
    print( AUp);
end

从 CI 加载脚本,添加一个名为 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

4

1 回答 1

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

根据手册- void lua_call (lua_State *L, int nargs, int nresults);(改为使用) ,与 Lua 5.1.5 Btw 一起工作得很好lua_pcall()。甚至不能用 Lua 5.1.5 头文件编译你的代码。

于 2013-07-10T12:30:14.217 回答