从C中获取Lua字符串。

我正在尝试学习如何使用Lua和如何与C进行接口交互。但我的第一次尝试中只包含了我遇到的一个问题,代码如下:

在运行此代码时,我看到的是:

请注意,空行是有意的;stackDump()告诉我们此时栈为空。看起来调用lua_getglobal(lua,"program")在栈上压入的是nil,而不是字符串"echo"。请问您能帮助我找出原因吗?

顺便问一句:为什么会有一个函数被压入栈中(可能是luaL_loadfile()自动压入的)?我记得没有读到过自动压入函数的内容。

点赞
用户107090
用户107090

luaL_loadfile 函数加载一个 Lua 脚本但不执行它,因此不定义全局变量 program。应该使用 luaL_dofile 函数。

luaL_loadfile 函数编译一个 Lua 脚本并将代码作为 Lua 函数存储在栈上。

luaL_dofile 函数调用 luaL_loadfile 函数并调用该函数。

请参阅Lua 手册上的 luaL_loadfileluaL_dofile 详细说明。

2015-09-30 19:11:50