我有一個Lua解釋器,只要我在代碼中發生語法錯誤,返回的錯誤信息就是attempted to call a string value
,而不是有意義的錯誤消息。例如,如果我運行這個Lua代碼:Lua語法錯誤的描述性錯誤信息
for a= 1,10
print(a)
end
而不是返回有意義'do' expected near 'print'
和行號的它只會返回錯誤attempted to call a string value
。
我的C++代碼如下:提前
void LuaInterpreter::run(std::string script) {
luaL_openlibs(m_mainState);
// Adds all functions for calling in lua code
addFunctions(m_mainState);
// Loading the script string into lua
luaL_loadstring(m_mainState, script.c_str());
// Calls the script
int error =lua_pcall(m_mainState, 0, 0, 0);
if (error) {
std::cout << lua_tostring(m_mainState, -1) << std::endl;
lua_pop(m_mainState, 1);
}
}
謝謝!