使用Lua 5.3.4 C API,这可行:
luaL_dostring(lua, "dofile('mnemonics.lua')");
但是这无法执行文件:
luaL_dofile(lua, "mnemonics.lua");
相反,它会报告“尝试调用字符串值”。
当我用
替换它时luaL_loadfile(lua, "mnemonics.lua");
它返回LUA_OK
,但它不会像预期的那样在堆栈上推送一个函数。事实上,之后堆栈是空的(gettop
报告0)。
我可以使用dostring解决方法,但要么我遗漏了某些东西,要么就是有错误。
答案 0 :(得分:0)
从空堆栈弹出会导致意外行为。 Lua解释器在执行C代码和执行Lua代码之间清理堆栈,因此混乱的堆栈不会影响Lua中的dofile
。