当前位置: 首页 > article >正文

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, '\\');

   // 初始化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;
}

#### 运行测试

在这里插入图片描述


http://www.kler.cn/a/385884.html

相关文章:

  • SpringMVC学习笔记(一)
  • 用OMS进行 OceanBase 租户间数据迁移的测评
  • 高级计算机算法的8道题(贪心、动态规划)
  • [产品管理-82]:《产品经理从入门到精通》产品经理的基本思维与核心思想
  • 基于Matlab的碎纸片的自动拼接复原技术
  • 鸿蒙学习生态应用开发能力全景图-开发者支持平台(5)
  • Qt | http获取网页文件(小项目)
  • python爬虫自动库DrissionPage保存网页快照mhtml/pdf/全局截图/打印机另存pdf
  • leetcode20.括号匹配
  • 以梧桐数据库为例讲解如何计算用户连续登录比率
  • 站长用站群安全特性怎么样
  • Python 数据可视化详解教程
  • Java8->Java19的初步探索
  • 反射型XSS--理论
  • AI时代IDE解析
  • 云服务器Linux部署war、jar包,并在nginx配置域名
  • express 使用JWT认证
  • 低空经济之星eVTOL研发技术详解
  • 越权访问漏洞
  • 基于MFC实现的赛车游戏
  • 大神狂秀技术 成功让三星手机用上macOS
  • 【hdfs】【hbase】【大数据技术基础】实践二 HBase Java API编程
  • 2024 CSS - 保姆级系列教程三 - 选择器与布局详解
  • 【MySQL】——数据库恢复技术
  • 数仓工具—Hive语法之窗口函数窗口范围/边界 range between和rows between
  • 黑马程序员Redis学习【持续更新】