使用 MINGW32 编译 Lua 5.2 会创建一个库 (lua52.dll),当发生 Lua 错误时,它可能会使主机应用程序崩溃。
我通过在测试脚本中生成 Lua 语法错误来检测到这个错误。如果脚本完全没有错误,则主机程序成功运行它。但是,当加载无效脚本时(例如,在 IF 块中缺少 THEN),主机程序崩溃了。
这是我的代码片段:
//Load the script
int status = luaL_loadfile(L, "foo.lua");
if (status == 0) {
//Run the script
....
} else {
warn("LUA script error: %d. %s", status, lua_tostring(L, -1));
lua_pop(L, 1);
}
如果脚本没有语法错误,status
则为 0 并且脚本成功执行。否则,luaL_loadfile
不返回并且程序崩溃。