Lua从C中添加/更改全局变量

我有一个小的 Lua 脚本:

function g ()
    print( AUp);
end

从 C 语言中我加载了这个脚本,用 Name 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 之前,我必须更新它。

点赞
用户1150918
用户1150918

我不确定,但你试过了吗:

  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 中工作得很好 顺便说一下,根据手册void lua_call(lua_State *L, int nargs, int nresults)(改用lua_pcall())。 甚至无法使用 Lua 5.1.5 头文件编译您的代码。

2013-07-10 12:30:14