【发布时间】:2014-02-12 10:55:07
【问题描述】:
我正在尝试使用 wxWidgets 作为我的 GUI 编写一个简单的 Lua 解释器。我正在从多行文本框中读取 Lua 命令。这是我的代码:
wxString cmdStr = m_OutputWindow->GetLineText(line-1); //Read text
const char* commandStr=(const char*)cmdStr.mb_str();
int err=luaL_loadbuffer(luastate,commandStr,strlen(commandStr),"line")||lua_pcall(luastate, 0, 0, 0);
wxString outputstr;
if(err)
{
outputstr=wxString::FromUTF8(lua_tostring(luastate,-1));
lua_pop(luastate, 1);
}
如果我尝试评估像 3+5 这样的简单表达式,则会收到以下错误
[string "line"]:1: syntax error near <eof>
任何想法表示赞赏。
【问题讨论】:
-
3+5不是有效的 Lua 语句,它是一个表达式。改用print(3+5)之类的东西。 lua-users.org/wiki/ExpressionsAsStatements -
如果我给出命令:print(3+5) 那么我得到以下错误 [string "line"]:1: unexpected symbol near char(236)
-
@macroland。我建议您尝试将命令作为 const 字符串。这将暂时将 wxWidgets 排除在外。
const char* commandStr="return 3+5";