一、环境与准备工作
测试环境: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>#