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

问题描述 投票:5回答:1

我有一个小的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之前更新它。

c variables lua
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

根据manual - void lua_call (lua_State *L, int nargs, int nresults);(使用lua_pcall()代替),使用Lua 5.1.5 Btw可以正常工作。甚至无法使用Lua 5.1.5标头编译您的代码。

© www.soinside.com 2019 - 2024. All rights reserved.