Вы, кажется, не понимаете несколько вещей.
luaL_loadfile
загружает скрипт из файла, компилирует его, но не запускает его. Он просто помещает его в стек Lua, чтобы вы могли запускать его с любыми параметрами, которые вы считаете подходящими.
luaL_dofile
загружает скрипт из файла, компилирует его, и запускает его, выталкивая скрипт из стека.
В случае ошибок luaL_loadfile
вернет код ошибки, объясняющий, что это за ошибка. Он также помещает сообщение об ошибке в стек Lua, если есть ошибка. Если ошибок не возникает, возвращается 0.
Аналогично, luaL_dofile
вернет 1, если произойдет ошибка, и сообщение об ошибке будет в стеке Lua.
Вы всегда должны проверять возвращаемое значение этих функций, чтобы увидеть, произошла ли ошибка, и действовать соответствующим образом.