我在这里寻求绝对的极简主义。 (自从我使用Lua C API以来已经有一段时间了。)
#include <lua.hpp>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv)
{
lua_State* state = luaL_newstate();
luaL_openlibs(state);
string input;
while (getline(cin, input))
{
auto error = luaL_dostring(state, input.c_str());
if (error)
{
cerr << "Lua Error: " << lua_tostring(state, -1) << '\n';
lua_pop(state, 1);
}
}
lua_close(state);
return 0;
}
只要我把它完美地喂给Lua,这个程序就可以正常工作。但是,如果我输入了不好的内容(例如asdf()
),程序就会崩溃!为什么它没有优雅地处理我的错误?
我之前试过打破电话。它在调用lua_pcall
本身时崩溃了。我从来没有超越那条线。
答案 0 :(得分:1)
二进制下载(我相信5.2.1)有一个在5.2.3中得到纠正的错误。我从源代码重建了库,现在我的程序工作正常。