我想知道 lua_call 是如何运作的

I want to know how lua_call works

我正在尝试在 C++ 中使用 lua。 这是我的代码。

int main() {
    lua_State* L = lua_open();
    luaL_openlibs(L);

    luaL_loadfile(L, "test.lua");
    lua_call(L, 0, 0);//First lua_call, just it Runs .lua script

    lua_getglobal(L, "funcFromLua");

    int a = 10;
    lua_pushinteger(L, a);
    lua_call(L, 1, 0);//Second lua, calls funcFromLua. right?

    lua_close(L);
}

第一个 lua_call 和第二个 lua_call 做不同的事情吗?

我不确定我在代码中的注释是否正确。

只有一个问题,我应该只做一次lua_getglobal(L, "a func")吗?

下面是test.lua

function funcFromLua(a) 
    print("a is", a)
end

您在代码中的注释是正确的。

第一个 lua_call 执行加载脚本的内容,test.lua。这定义了一个全局变量 funcFromLua.

第二个 lua_call 调用 funcFromLua 并将 a 设置为 10。