我想知道 lua_call 如何工作

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

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

    luaL_loadfile(L, "test.lua");
    lua_call(L, 0, 0);//第一次 lua_call, 只运行.lua脚本

    lua_getglobal(L, "funcFromLua");

    int a = 10;
    lua_pushinteger(L, a);
    lua_call(L, 1, 0);//第二次 lua, 调用 funcFromLua。是吗?

    lua_close(L);
}

第一次 lua_call 和第二次 lua_call 有不同的作用吗?

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

还有一个问题,我只需要执行一次lua_getglobal(L, "a func")吗?

以下是 test.lua

function funcFromLua(a)
    print("a is", a)
end
点赞
用户107090
用户107090

你代码里的注释是正确的。

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

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

2021-07-01 13:52:02