我试图找到一种方法来test.lua在不同的 Lua 状态之间共享特定 Lua 脚本(在示例中)的全局变量。
这是我的简单示例代码:
在 test.lua
num = 2
Run Code Online (Sandbox Code Playgroud)
在 main.cpp
#include <iostream>
#include <lua.hpp>
int main()
{
lua_State *L1 = luaL_newstate(); //script A
luaL_openlibs(L1);
lua_settop(L1, 0);
luaL_dostring(L1, "require('test') num = 5");
lua_State *L2 = luaL_newstate(); //script B
luaL_openlibs(L2);
lua_settop(L2, 0);
luaL_dostring(L2, "require('test') print(num)");
lua_close(L1);
lua_close(L2);
}
Run Code Online (Sandbox Code Playgroud)
我希望得到,5但我得到了2。
不能在不同的lua_State*through之间共享全局变量require吗?
添加 :
如果不可能,那么在 C++ 中打开test.luausingluaL_loadfile然后创建 getter/setter 方法以num在脚本A和之间共享变量是个好主意B吗?
例如像这样,
脚本A:
script = my.Script("test")
script:setVar("num", 5)
Run Code Online (Sandbox Code Playgroud)
脚本B:
script = my.Script("test")
print(script:getVar("num"))
Run Code Online (Sandbox Code Playgroud)
我想知道您如何看待这种设计作为require.
两个不同的lua_States 是完全独立的。一个人不能直接影响发生在另一个人身上的任何事情。您可以将一些 C 代码公开给一个允许它修改另一个,或者他们都可以访问一些允许他们共享数据的外部资源(例如文件)。
但在这样的事情之外,不,他们不能互动。
对此的首选方法是不要让它们分开lua_States。
| 归档时间: |
|
| 查看次数: |
1388 次 |
| 最近记录: |