C++ 使用全局lua_State*变量

C++ 使用全局lua_State*变量,c++,multithreading,lua,global-variables,C++,Multithreading,Lua,Global Variables,我想在我的程序中使用一个全局lua_State*变量,通过initLua()函数初始化它,并使用它从main()运行一些lua函数。当我尝试它时,Lua代码根本不会运行。将来,我想使用一个Lua状态数组来实现多线程,其中每个线程都有自己的Lua状态 在main()中初始化Lua状态时,一切正常。我在跑W10 在cfg.lua中: 功能测试() 返回10; 结束 在C++中,用于设置全局状态变量*L: void initLua(lua_State*L){ L=luaL_newstate(); l

我想在我的程序中使用一个全局lua_State*变量,通过initLua()函数初始化它,并使用它从main()运行一些lua函数。当我尝试它时,Lua代码根本不会运行。将来,我想使用一个Lua状态数组来实现多线程,其中每个线程都有自己的Lua状态

在main()中初始化Lua状态时,一切正常。我在跑W10

在cfg.lua中:

功能测试()
返回10;
结束
在C++中,用于设置全局状态变量*L:

void initLua(lua_State*L){
L=luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L,“./cfg.lua”);
}
main()
中,int
foo(L)
从Lua调用
teste()
函数,并打印结果


应该打印
10
,但是在
main()

外部初始化状态变量时不会发生任何事情首先,我强烈建议将Lua状态保持为本地。如果您可以从参数中看到函数使用Lua状态,那么阅读代码就容易多了

如果确实需要将Lua状态设置为全局,则
initLua
不应具有任何参数。您的问题是由于您分配给参数
L
而不是全局变量造成的


即使您的Lua状态是本地的,
initLua
也不应该接受参数。它只需生成一个本地
lua\u State*
变量并返回该变量。

这很有意义,谢谢!我将再试一次,并返回一些结果。