Qt编译lua库并调用

QString CScriptDialog::procLuaFunc(const QString &luaStr, const QString &val) { lua_State *L; qDebug()<< "*********luaStr: ", luaStr; // luaStr = removeChar(luaStr, '\\'); // 初始化Lua L = luaL_newstate();//新建lua虚拟机 if (L == NULL) { qDebug()<< "lua_open fault luaStr: ", luaStr; return val; } // 加载Lua标准库 luaL_openlibs(L); // 将Lua代码段转换为字符串,并传递给Lua执行 if (luaL_dostring(L, luaStr.toStdString().c_str()) != 0 ) { lua_close(L); qDebug("luaL_dostring fault: %s ", luaStr.toStdString().c_str()); return val; } // 获取函数名称 const char *func_name = "getValue"; lua_getglobal(L, func_name); // 将参数压入Lua栈中 lua_pushstring(L, val.toStdString().c_str()); // 调用Lua中的函数 if (lua_pcall(L, 1, 1, 0) != 0) { // 第二个参数是传递给Lua的参数个数,第三个是从Lua返回的值个数 qDebug("lua_pcall fault: %s %s ", luaStr.toStdString().c_str(),lua_tostring(L, -1)); lua_close(L); return val; } // 从Lua中获取返回值 if (!lua_isstring(L, -1)) { qDebug("Function {} did not return a string.", func_name); lua_close(L); return val; } QString retVal = lua_tostring(L, -1); // 打印返回值 qDebug()<<"*********Result: "<<retVal; // 关闭Lua状态机 lua_close(L); return retVal; } #### 运行测试
上一篇:基于Spring Boot 框架的试卷自动生成系统的设计与实现


下一篇:Python | Leetcode Python题解之第551题学生出勤记录I-题解: