文笔不好,可能部分地方讲的不清楚,大部分都是用我自己的话说的,不专业的地方请见谅
1.下载lua开源代码,我这边用的是lua5.3
lua虚拟机,可以这么理解,编辑的lua脚本通过虚拟机运行,脚本和qt程序之间怎么产生之间联系,lua这边提供可以注册接口的功能,就是把统一格式的函数指针注册到lua中去,然后脚本中通过名称可以调用这些接口。
typedef int (*macroFunc)(lua_State *L);//定义函数指针类型
创建lua状态机 L = luaL_newstate(); 打开通用函数接口 luaL_openlibs(L); 将C函数转换为Lua的"function"并压入虚拟栈。 lua_pushcfunction(L, MFUNC_P[i]); 弹出栈顶元素 lua_setglobal(L, MACROFUNCNAME[i].toUtf8().constData());
执行lua脚本
if(L && lua_status(L) == LUA_OK)
{
//qDebug()<<it.value().toUtf8().constData();
if(luaL_dostring(L, (it.value()).toUtf8().constData())) // 执行Lua命令。
{
QString errStr = QString(QByteArray(lua_tostring(L,-1)));
qDebug()<<errStr;
}
}
else
{
qDebug()<<"The script runtime environment is abnormal.";
}