Используя 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, но либо я что-то упускаю, либо есть ошибка.
lua
? Попробуйте запустить программу с помощью Valgrind. - person Hisham H M   schedule 02.03.2017lua_settable
. Я считаю, что причина, по которой команда Lua работала, а команда C API не работала, заключается в том, что стек очищается при переходе между кодом C и кодом Lua. - person Octa9on   schedule 02.03.2017