欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Qt编译lua库并调用

Qt编译lua库并调用

2025/4/4 6:21:58 来源:https://blog.csdn.net/wuquan_1230/article/details/143626480  浏览:    关键词:Qt编译lua库并调用

参考博客:

编译lua库

参考下面文章编译lua库文件
QT5.9学习笔记之QT编译lua库_qtluaintf.h-CSDN博客
https://blog.csdn.net/qq_23345187/article/details/112710677

Qt代码引用lua库文件

打开pro项目文件,右键空白处,点击添加库:
在这里插入图片描述
选择外部库:
在这里插入图片描述
如下选择静态库文件
在这里插入图片描述

代码调用

头文件只需要包含lua.hpp
#include “lua.hpp”

下面是封装好的一个参数:

QString CScriptDialog::procLuaFunc(const QString &luaStr, const QString &val)
{lua_State *L;qDebug()<< "*********luaStr: ", luaStr;//    luaStr = removeChar(luaStr, '\\');// 初始化LuaL = 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;
}#### 运行测试

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com