Lua状态是什么?

8

我需要知道如何使用lua_setglobal()函数将变量声明为Lua全局变量。

2个回答

11

你需要查看Programming in Lua这个页面:第一个例子。做个类比,可以想象C或C++程序在一个小盒子里运行,并且可以访问其函数、变量等。lua_State基本上是一种访问Lua“盒子”中正在执行的内容的方法,它可以让你将两种语言结合起来。


你能说一下,为什么在程序中可能会有多个 lua_State 对象吗?我目前正在尝试钩入 Lua 初始化过程,并发现至少有三个不同的 lua_State 对象。我不理解的是——这和我的问题有关——为什么 L->l_G->_defaultmeta.value.gc 总是 NULL。这三个结构体都已经通过了,但在该时间点上没有一个值被设置。但这不可能,因为原始的 Lua 代码看起来像 - Stefan Falk
如果在初始化过程的这个阶段应该设置一个值,那么请提供帮助! - Stefan Falk

8

以下是一个简单的例子,可能会有所帮助...

lua_State* L=lua_open();           // create a Lua state
luaL_openlibs(L);                  // load standard libs 

lua_pushstring(L, "nick");         // push a string on the stack
lua_setglobal(L, "name");          // set the string to the global 'name'

luaL_loadstring(L, "print(name)"); // load a script
lua_pcall(L, 0, 0, 0);             // call the script

你知道为什么程序中可能会有多个lua_State对象吗?我需要在这里得到帮助。正如我在下面所述,我认为在我窃取lua_State结构体指针的时候应该为L->l_G->_defaultmeta.value.gc设置一个值,但由于某种原因,没有一个被窃取的结构体设置了它。 - Stefan Falk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接