Lua & C++ : 运行动态代码片段?

我有一个运行Lua线程,以及一个用Qt实现的文本编辑器在同步运行。我想让用户在文本编辑器中运行任何他编写的Lua代码,但它不够完美。它可以处理简单的指令,比如"print(5)"或"tmp = 5; print(tmp)",但它不能处理字符串(例如print("hello world"))或数值表达式,比如print(5+3)。最糟糕的是,如果我尝试调用先前定义的lua函数或已注册的C函数,它也不能运行。

如果我删除signals&slots等内容,我的代码大致如下:

const char* text = textEdit->toPlainText().toLatin1().data();
luaL_loadstring(_LuaState, text);
lua_pcall(_LuaState, 0, LUA_MULTRET, 0);  ///这两行以前是luaL_doString,
//但它不能工作

Lua状态与我注册C函数和加载定义某些其他函数的lua文件时使用的状态相同。

点赞