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"

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

cpp 复制代码
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;
}

#### 运行测试
相关推荐
神仙别闹13 小时前
基于QT(C++)实现学本科教务系统(URP系统)
数据库·c++·qt
谁动了我的代码?15 小时前
QT<34> 利用线程池处理耗时任务以及回调函数的使用
开发语言·qt
木心爱编程17 小时前
【Qt 5.14.2 新手实战】QTC++入门筑基——按钮与标签联动:QPushButton + QLabel 实现图片切换器
java·c++·qt
小新11017 小时前
vs2022+Qt插件初体验,创建带 UI 界面的 Qt 项目
开发语言·qt·ui
十五年专注C++开发18 小时前
Qt实现多语言原理和实践详解
开发语言·c++·qt·多语言
ChaITSimpleLove19 小时前
基于 .NET Garnet 1.0.91 实现高性能分布式锁(使用 Lua 脚本)
分布式·.net·lua
神仙别闹19 小时前
基于QT(C++)实现的翻金币游戏
c++·qt·游戏
月上林梢20 小时前
QT圆形加载进度条
数据库·c++·qt·进度条
A0_張張21 小时前
记录一个PDF盖章工具(PyQt5 + PyMuPDF)
开发语言·python·qt·pdf
淼淼76321 小时前
工厂方法模式
开发语言·c++·windows·qt·工厂方法模式