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

window QT/C++ 与 lua交互(mingw + lua + LuaBridge + luasocket)

一、环境与准备工作

测试环境:win10
编译器:mingw
QT版本:QT5.12.3
下载三种源码:
LuaBridge源码:https://github.com/vinniefalco/LuaBridge
LUA源码(本测试用的是5.3.5):https://www.lua.org/download.html
luasocket源码:https://github.com/diegonehab/luasocket
目标:实现QT调用lua脚本,然后lua脚本能使用luasocket实现tcp通讯
在这里插入图片描述
下载完后解压到当前文件(本测试的路径d:/LUA_TOOL)
在这里插入图片描述

二、编译LUA源码

注意:这里下载lua的不是exe,而是源码!!!
在这里插入图片描述

1、创建DLL项目并生成库

参考博客1:QT环境下的Lua库编译及运行环境配置
1)我们需要将LUA源码编译成一个静态库和动态库,所以要创建一个DLL项目
在这里插入图片描述
2)我这里的项目命名为lua535
在这里插入图片描述
3)编译器选择MINGW 32位(因为我要编译出32位的库,我后面的项目都是32位,这里各位要注意一下。根据自己的需求)
在这里插入图片描述
4)一直下一步就好了。
在这里插入图片描述
5)删除系统自动创建的那几个文件,然后将lua源代src文件夹放入工程目录下,将除了luac.c、lua.c的所有文件加进工程。
在这里插入图片描述
在这里插入图片描述
6)在luaconf.h开始加上#define LUA_BUILD_AS_DLL
7)选择“release”编译出库。(lua535.dll liblua535.a 一个动态库、一个静态库)
在这里插入图片描述
8)在D:\LUA_TOOL\lua-5.3.5下创建mingw_32_lib文件夹,用于存放两个库
在这里插入图片描述
在这里插入图片描述

三、LuaBridge + LUA

参考博客2:https://www.cnblogs.com/wunaozai/p/14087370.html

1、创建TEST_LUA项目

我们将会在这个项目调用lua,完成各种交互(详细的交互可以参考博客2,里面有各种交互)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编译器我还是选择用Mingw32位,因为我刚才生成的库是32位的。
在这里插入图片描述

2、TEST_LUA项目添加LuaBridge源码

1)我们将刚才下载好的LuaBridge源码中的LuaBridge-master\Source\LuaBridge\文件夹整个复制到TEST_LUA项目
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
2)将刚才lua5.3.5源码头文件以及刚生成的库添加进入TEST_LUA项目内,我们创建一个lua-5.3.5并且生成两个文件夹分别存放头文件和库
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

(上面复杂的头文件在下载lua源码上查找,这些文件都放在项目下)

3)创建一个common_lua.h,并且添加到项目内。把lua和LuaBridge依赖关系搞定
在这里插入图片描述

#ifndef COMMON_LUA_H
#define COMMON_LUA_H//把lua和LuaBridge依赖关系搞定
#include "lua-5.3.5/include/lua.hpp"
#include "LuaBridge/LuaBridge.h"#include <QString>
#include <QRandomGenerator>
#include <QDebug>
#include <vector>#

相关文章:

window QT/C++ 与 lua交互(mingw + lua + LuaBridge + luasocket)

一、环境与准备工作 测试环境:win10 编译器:mingw QT版本:QT5.12.3 下载三种源码: LuaBridge源码:https://github.com/vinniefalco/LuaBridge LUA源码(本测试用的是5.3.5):https://www.lua.org/download.html luasocket源码:https://github.com/diegonehab/luasocket 目…...

中阳科技:量化模型驱动的智能交易革命

在金融市场飞速发展的今天&#xff0c;量化交易作为科技与金融的深度融合&#xff0c;正推动市场格局向智能化转型。中阳科技凭借先进的数据分析技术与算法研发能力&#xff0c;探索量化模型的升级与优化&#xff0c;为投资者提供高效、智能的交易解决方案。 量化交易的本质与价…...

电子应用设计方案-56:智能书柜系统方案设计

智能书柜系统方案设计 一、引言 随着数字化时代的发展和人们对知识获取的需求增加&#xff0c;智能书柜作为一种创新的图书管理和存储解决方案&#xff0c;能够提供更高效、便捷和个性化的服务。本方案旨在设计一款功能齐全、智能化程度高的智能书柜系统。 二、系统概述 1. 系…...

宠物兔需要洗澡吗?

在宠物兔的养护领域&#xff0c;“宠物兔需要洗澡吗” 这个问题一直备受争议。其实&#xff0c;这不能简单地一概而论&#xff0c;而要综合多方面因素考量。 兔子本身是爱干净的动物&#xff0c;它们日常会通过自我舔舐来打理毛发。从这个角度讲&#xff0c;如果兔子生活环境较…...

ubuntu升级python版本

Ubuntu升级Python版本 解压缩文件&#xff1a; 下载完成后&#xff0c;解压缩文件&#xff1a; tar -xf Python-3.12.0.tgz编译并安装&#xff1a; 进入解压后的目录&#xff0c;然后配置和安装Python&#xff1a; codecd Python-3.12.0 ./configure --enable-optimizations ma…...

《Time Ghost》的制作:使用 DOTS ECS 制作更为复杂的大型环境

*基于 Unity 6 引擎制作的 demo 《Time Ghost》 开始《Time Ghost》项目时的目标之一是提升在 Unity 中构建大型户外环境的构建标准。为了实现这一目标&#xff0c;我们要有处理更为复杂的场景的能力、有足够的工具支持&#xff0c;同时它对引擎的核心图形、光照、后处理、渲染…...

详细描述一下 Elasticsearch 更新和删除文档的过程。

1、删 除 和 更 新 也 都 是 写 操 作 &#xff0c; 但 是 Elasticsearch 中的 文 档 是 不 可 变 的 &#xff0c; 因 此 不 能被 删 除 或 者 改 动 以 展 示 其 变 更 &#xff1b; 2、磁盘 上 的 每 个 段 都 有 一 个 相 应 的 .del 文件 。当删 除 请 求 发 送 后 &#…...

OpenCV与Qt5开发卡尺找圆工具

文章目录 前言一、卡尺原理二、1D边缘提取三、圆拟合四、软件实现结束语 基于OpenCV与Qt5构建卡尺找圆工具 前言 博主近期基于海康Vision Master4.0做了一个工业视觉工程项目&#xff0c;其中就使用到了海康VM的找圆工具&#xff0c;然后博主根据其中的技术原理&#xff0c;也…...

【网络安全】Web Timing 和竞争条件攻击:揭开隐藏的攻击面

Web Timing 和竞争条件攻击&#xff1a;揭开隐藏的攻击面 在传统的 Web 应用中&#xff0c;漏洞的发现和利用通常相对容易理解。如果代码存在问题&#xff0c;我们可以通过发送特定输入来强制 Web 应用执行非预期的操作。这种情况下&#xff0c;输入和输出之间往往有直接关系&…...

分立器件---运算放大器关键参数

运算放大器 关键参数 1、供电电压:有单电源电压、双电源电压,双电源电压尽量两个电源都接。如图LM358B,供电电压可以是20V或者是40V和GND。 2、输入偏置电流IB:当运放输出直流电压为零时,运放两个输入端流进或者流出直流电流的平均值。同向输入端电流IB+与反向输入端电流…...

Stable Diffusion Controlnet常用控制类型解析与实战课程 4

本节内容&#xff0c;是stable diffusion Controlnet常用控制类型解析与实战的第四节课程。上节课程&#xff0c;我们陆续讲解了几个与图像风格约束相关的控制类型&#xff0c;本节课程我们再学习一些实用价值较高的控制类型&#xff0c;看一看他们提供了哪些控制思路。 一&…...

Linux 本地编译安装 gcc9

这里演示非sudo权限的本地linux 用户安装 gcc9 下载源代码&#xff1a; 可以从GCC官方网站或其镜像站点下载GCC 9的源代码压缩包。使用wget或curl命令&#xff0c;这通常不需要额外权限 wget https://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.gz tar -xf gcc-9.5.0.tar…...

SpringBoot 自定义事件

在Spring Boot中&#xff0c;自定义事件和监听器是一种强大的机制&#xff0c;允许你在应用程序的不同部分之间进行解耦通信。你可以定义自定义事件&#xff0c;并在需要的时候发布这些事件&#xff0c;同时让其他组件通过监听器来响应这些事件。 以下是如何在Spring Boot中创…...

unity shader中的逐像素光源和逐顶点光源

在Unity Shader中&#xff0c;逐像素光源和逐顶点光源是两种不同的光照计算方法&#xff0c;它们之间存在显著的区别。 一、基本原理 逐顶点光源&#xff1a;这种方法在顶点着色器中计算每个顶点的光照值。然后&#xff0c;在片段着色器中&#xff0c;通过插值算法将这些顶点…...

MongoDB-副本集

一、什么是 MongoDB 副本集&#xff1f; 1.副本集的定义 MongoDB 的副本集&#xff08;Replica Set&#xff09;是一组 MongoDB 服务器实例&#xff0c;它们存储同一数据集的副本&#xff0c;确保数据的高可用性和可靠性。副本集中的每个节点都有相同的数据副本&#xff0c;但…...

【图像处理lec7】图像恢复、去噪

目录 一、图像退化与恢复概述 二、图像退化中的噪声模型 1、使用 imnoise 函数添加噪声 &#xff08;1&#xff09;imnoise 函数的概述 &#xff08;2&#xff09;函数语法 &#xff08;3&#xff09;支持的噪声类型与具体语法 &#xff08;4&#xff09;噪声类型的详细…...

C# 连接ClickHouse 数据库

在 C# 中连接 ClickHouse 数据库&#xff0c;您可以使用 ClickHouse.Client 库。这个库提供了对 ClickHouse 数据库的高效访问。以下是详细的步骤指南&#xff0c;帮助您在 C# 项目中连接和操作 ClickHouse 数据库。 1. 安装 ClickHouse.Client 包 首先&#xff0c;您需要在您…...

在安卓Android应用中实现二维码图像的保存与条形码文本合并

在开发Android应用时&#xff0c;我们经常需要处理图像和文本数据&#xff0c;特别是当涉及到二维码生成和条形码信息展示时。本文将介绍如何在Android应用中实现一个功能&#xff0c;即将二维码图像保存到设备存储&#xff0c;并在图像下方添加条形码文本信息。为了实现这一功…...

Vue3 重置ref或者reactive属性值

需要重新定义一个对象绑定复制给原对象 。 实例代码: const data () > ({groupId: ,groupCode: ,groupName: ,groupType: ,});const formData ref(data());//重置对象值 const reset()>{Object.assign(formData, data()…...

深入理解STL list erase

1、list erase后&#xff0c;当前的迭代器失效&#xff0c;返回指向下一个节点的迭代器 #include<list> #include<iostream> #include<vector> using namespace std;int main() {list<int> ls;ls.push_back(1);ls.push_back(2);ls.push_back(3);list&…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

Python常用模块:time、os、shutil与flask初探

一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...

window 显示驱动开发-如何查询视频处理功能(三)

​D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针&#xff0c;该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...