使用全局 lua_State* 变量
Using a global lua_State* variable
我想在我的程序中使用一个全局lua_State*变量,通过initLua((函数初始化它,并使用它来从main((运行一些Lua函数。当我尝试它时,Lua 代码根本无法运行。将来,我想使用Lua状态数组来实现多线程,其中每个线程都有自己的Lua状态。
当我在 main(( 中初始化 Lua 状态时,一切正常。我正在运行 W10。
CFG内部.lua:
function teste()
return 10;
end
在 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_State *
变量并返回该变量。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 使用分隔符通过'Street; City; State; Country'将每个区域存储到不同的变量中来解析地址