windows环境下编译luasocket + lua5.3

windows环境下利用VS编译luasocket 为了更方便地学习和使用skynet框架,本地用lua写个简易客户端进行测试,也是个不错的选择。 前提是你在windows上编译了一份动态库版本的lua,以下以vs2017编译器为例。 动态库版本lua5.3.5一份,如果没有,我的之前博客:vs2017编译Lua最新源码,生成动态链接库版本 下载地址: https://github.com/diegonehab/luasocket.git 用vs2017打开luasocket.sln解决方案 根据该解决方案的属性,它是根据几个环节变量来确定lua的头文件所 阅读详情

luasocket 源码:
https://github.com/diegonehab/luasocket

lua5.3源码
http://www.lua.org/ftp/lua-5.3.3.tar.gz

环境:
windows 10 64位
下载安装mingw,选择安装:

Mingw Base System
    mingw32-gcc/bin
MSYS Base System
    msys-bash/bin    // 不安装这个会出现make的时候提示/bin/sh找不到的错误
    msys-make/bin

由于目前mingw自带的gcc版本比较低,目前为6.3.0,而使用这个版本编译luasocket的时候,会报错。
https://stackoverflow.com/questions/48812849/luasocket-error-not-enough-memory-declaration
这个老哥最后的解决方法是使用mingw-w64来代替mingw。但是我这边替换了之后还有一些问题,就是Mingw-w64有些东西没有,比如说make的工具链就不全。所以使用了mingw+mingw64混合配置的方案。
其中make命令使用mingw,而gcc工具使用mingw-w64下的。

首先是编译lua。

cd lua5.3.3
make install mingw

此时会自动安装好一些lua的头文件和部分文件到mingw的安装目录。

还有个需要注意的地方,C:\MinGW\msys\1.0\bin\lua\5.3这个目录需要存放win64的lua53.dll
我从lua-5.3.3_Win64_dll12_lib.zip中解压出来


此时进入到luasocket目录,

$ make PLAT=mingw LUAV=5.3 LUAINC_mingw=/c/MinGW/msys/1.0/local/include

其中/c/MinGW/msys/1.0/local/include为安装lua的时候,自动安装的头文件路径,这个路径会给编译luasocket时候使用。
平台选mingw,lua的版本使用5.3,第三个参数为头文件路径。

还有一个步骤,这里比较奇怪。
C:\MinGW\msys\1.0\bin\lua\5.3 在这个目录下(如果不存在手动创建一下)。下载lua win64的dll库,方便在编译luasocket的时候使用。
https://sourceforge.net/projects/luabinaries/files/5.3.3/Windows%20Libraries/Dynamic/
选择lua-5.3.3_Win64_dll12_lib.zip
这里用win32的dll就不会编译成功。

如果上次没编译成功,就make clean一下

xxxx@DESKTOP-6xxxxx MINGW64 /e/git/luasocket (master)
$ make PLAT=mingw LUAV=5.3 LUAINC_mingw=/c/MinGW/msys/1.0/local/include
/usr/bin/make -C src mingw
make[1]: Entering directory `/e/git/luasocket/src'
/usr/bin/make all PLAT=mingw
make[2]: Entering directory `/e/git/luasocket/src'
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o luasocket.o luasocket.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o timeout.o timeout.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o buffer.o buffer.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o io.o io.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o auxiliar.o auxiliar.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o compat.o compat.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o options.o options.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o inet.o inet.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o except.o except.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o select.o select.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o tcp.o tcp.c
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o udp.o udp.c
gcc luasocket.o timeout.o buffer.o io.o auxiliar.o compat.o options.o inet.o wsocket.o except.o select.o tcp.o udp.o  /usr/bin/lua/5.3/lua53.dll -shared -Wl,-s -lws2_32 -o socket-3.0-rc1.dll
gcc  -IC:/MinGW/msys/1.0/local/include -DLUASOCKET_INET_PTON -DLUASOCKET_NODEBUG -DWINVER=0x0501 -Wall -O2 -fno-common   -c -o mime.o mime.c
gcc mime.o compat.o  /usr/bin/lua/5.3/lua53.dll -shared -Wl,-s -lws2_32 -o mime-1.0.3.dll
make[2]: Leaving directory `/e/git/luasocket/src'
make[1]: Leaving directory `/e/git/luasocket/src'

至此编译成功,生成了两个dll文件。
socket-3.0-rc1.dll
mime-1.0.3.dll


最后make install 之后,会在目录中形成这样的结构

C:\MinGW\msys\1.0\lua\5.3
						|- lua
							| - socket
							| - ltn12.lua
							| - mine.lua
							| - socket.lua
						|- mine
							|- core.dll
						|- socket
							|- core.dll

将这个目录中的上述内容,目录结构不改,拷贝到lua-5.3.3_Win64_bin目录中,就可以正常跑起来了。

-- hello.lua
local socket = require"lua/socket"
local mime   = require"lua/mime"
print("Hello from " .. socket._VERSION .. " and " .. mime._VERSION .. "!")

输出

Hello from LuaSocket 3.0-rc1 and MINE 1.0.3 !

最后
感谢这位老哥的文章,我之前编译出来了dll文件,但是不清楚怎么运行起来。看了这个文章就豁然开朗
https://blog.youkuaiyun.com/honglicu123/article/details/72705572

lua web快速开发指南(8) - 利用httpd提供Websocket服务 Websocket的技术背景 WebSocket是一种在单个TCP连接上进行全双工通信的协议, WebSocket通信协议于2011年被IETF定为标准RFC 6455并由RFC7936补充规范. WebSocket使得客户端和服务器之间的数据交换变得更加简单, 使用WebSocket的API只需要完成一次握手就直接可以创建持久性的连接并进行双向数据传输. WebSocket支持的客户端不仅限于浏... 阅读详情

相关推荐

luasocket系列: luasocket tcp

luasocket  拓展库提供了tcp 模块,该模块提供一些操作,非常简单.但是不知道为什么源代码中的例子有错误. 简单写了一个luasocket tcp 协议的例子,代码如下: tcpsample.lua 代码: --绑定地址和端口号 host = host or "127.0.0.1" port = port or 8080 --创建tcp对象,方式和udp创建类似,通过meta

sunning9001的专栏 1万+

纯lua实现websocket,基于luawebsocket,love2d可用

文章目录参考文章核心代码完整程序 参考文章 WebSocket 详解 The WebSocket API (WebSockets) 核心代码 local mask_key = {1, 14, 5, 14} local function send(sock, opcode, message) -- message type sock:send(string.char(bor(0x80, opcode))) -- empty message if not message t

flaribbit的博客 3575

关于在windows10系统64位安装luasocket问题

lua luasocket

Jack的博客 817

Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected

首先说一下5.3貌似没有这个问题, 但是目前最新版的luasocket 3.0 rc1只能支持5.2, 5.3调用的话程序会崩溃(不知道是不是我没配置好) 出现这个问题的原因, 想必网上有很多资料了, 就是C model的静态和动态链接的问题, lua5.2不支持 >= 2的静态链接, 而如果在编译得到lua.lib的时候用了静态链接,  编译得到socket.dll 和 mime.d

Minacor-Mynarco 2185

luawebsocket-old:Lua 的 WebSocket 实现,用 C 编写

网络套接字 Lua 的 WebSocket 实现,用 C 编写 版权所有 (C) 2014, 2015 Micro Systems Marc Balmer, CH-5073 Gipf-Oberfrick。 版权所有。

lua socket 支持lua SOCKET编程

利用lua socket可编写脚本网络程序,方便快捷1

windows 环境下,为lua添加luasocket库

自己想要在windows上使用lua的luasocket库,网上查可以下,大部分是linux下面的植入方法,windows上面的基本上都是以安装luaforwindows使用的其植入好的库,闲着没事自己去luasocket的官网上看了一下windows的植入文档(http://w3.impa.br/~diego/software/luasocket/),如是记录下面,希望能对有和我一样需求的人提供一点帮助

GiveMeFive_1003的博客 1万+

从零到英雄:Spring Boot 微服务架构全攻略

在数字化转型的时代,微服务架构已成为构建可扩展、高可用系统的首选方案。本文以“从零到英雄”为主题,详细指导读者使用Spring Boot快速构建微服务帝国。从基础环境搭建入手,逐步深入到服务发现、配置管理、负载均衡、断路器、API网关、安全认证、监控与部署等核心模块。通过大量代码示例和详细解释,包括中文注释,帮助初学者和中级开发者掌握Spring Boot的核心概念和技术实践。文章强调实际操作,涵盖RESTful API开发、数据库集成、容器化部署等内容,并讨论常见问题与优化策略。无论你是Java开发者还是

一个被知识诅咒的人 2699

记一次艰难的windows平台luasocket编译过程

windows环境下luasocket的编译和引用

wuliiqq的博客 995

《科研伦理与学术规范》期末考试答案2023

26单选(2 分)某学术杂志的评稿人同时是某高校相关专业的硕士生导师,在评判一个稿件的时候,他发现该作者研究的题目很有价值, 他便一边压下这个稿子,一边将稿子的纲要传给自己门下的硕士生, 指导他们使用这个题目独立写出一篇论文,并帮助他们发表在其他期 刊上。D.要善待实验动物,是指在饲养管理和使用实验动物过程中,要采取有效措施,使实验动物免遭不必要的伤害、饥渴、不适、惊恐、折磨、疾病和疼痛,保证动物能够实现自然行为,受到良好的管理与照料,为其提供清洁、舒适的生活环境。张某在压力之下不得不屈从。

Glenseeds的博客 4万+

主流双目相机技术参数横向评测:从ZED到INDEMIND的深度解析

本文对主流双目相机进行了深度横向评测,涵盖ZED、Bumblebee、Leap Motion、DUO 3D及INDEMIND等国内外产品。文章详细解析了分辨率、帧率、视场角、基线等核心参数,并结合科研、机器人导航、无人机、工业检测等典型应用场景,提供了实战选型指南,帮助读者根据具体需求挑选最合适的双目视觉解决方案。

weixin_29212867的博客 640

关于luasocket的编译和部署

lua语言是一门轻量级、可扩展、使用方便的脚本语言,近年来在很多领域得到了广泛的使用,特别是在游戏领域,很多服务器和客户端引擎都选择使用lua来做扩展。同时lua自出生以来受到很多开发者的青睐,并为之开发了很多扩展库,例如lfs、luasql、redis-lua、luasocket、luajson等都得到了广泛的使用。 其中luasocket主要是提供网络方面的扩展,提供了包括tcp、u

帘卷西风的专栏 7970

C++和蓝图1:Unreal Engine 中 C++ 与蓝图的桥梁

摘要: 本文介绍了Unreal Engine(UE)中C++与蓝图可视化脚本的结合机制,重点解析了宏系统(UCLASS、UPROPERTY、UFUNCTION)如何实现代码与蓝图的交互。相比Unity的纯C#脚本模式,UE的双轨制开发允许程序员用C++处理核心逻辑,同时通过蓝图让非程序员快速迭代。文章对比了两大引擎的编程范式差异,指出UE的反射系统和宏标记提供了更精细的控制,并给出了从Unity迁移到UE的具体思路。核心在于理解UE的混合编程优势:C++保证性能,蓝图提升开发效率,二者通过宏系统无缝协作。

qq_46348216的博客 1406

安装luasocket 的正确姿势

在lua中用下面这种方式使用socket,安装luasocket-2.0.2后老是报一些莫名其妙的错误。 require("socket") 下面是部分报错信息 lua: error loading module 'socket.core' from file '/usr/local/lib/lua/5.3/socket/core.so': /usr/local/lib/lua/5.3/s...

weixin_30650039的博客 881

three.js开发3D地图记录(二)

添加地图点击事件,点击区域,地图区域改变颜色并浮起来。

anwebDesigner的博客 1694

Agent Skills应用解析:构建可扩展、高效率AI探员

Agent Skills是一个简洁而强大的概念:它是一个包含组织化的指令、脚本和资源的文件夹,智能体可以动态地发现并加载这些内容,以在特定任务中表现更佳。可组合性(Composability):一个Agent Skill是一个独立的、封装良好的能力单元。开发者可以为不同的功能(例如PDF处理、网络浏览、数据分析)创建独立的技能,然后根据需要将它们组合起来,赋能不同的智能体。这意味着不再需要为每个用例构建碎片化、定制设计的智能体,而是可以通过组合现有技能来快速构建新的专业智能体。

形上得其象,形下合于数;阴阳自济,玄理自明。 1627

LuaSocket部署与安装:跨平台配置的完整解决方案

LuaSocket是Lua语言的网络支持库,提供了TCP、UDP等网络通信功能,是开发网络应用的必备工具。本文将详细介绍如何在不同操作系统上快速部署和安装LuaSocket,帮助新手用户轻松上手这个强大的网络库。 ## 📋 准备工作:环境要求 在开始安装LuaSocket之前,请确保您的系统满足以下基本要求: - Lua 5.1或更高版本 - LuaRocks包管理器(推荐,简化安装过程)

gitblog_00542的博客 943

QGis二次开发 —— 1、win10/win11搭建Vs2017-QGis3.40.12环境(附Vs2017环境效果,附全部问题解决方法)(附:Qt助手加入QGis接口说明文档)

QGis二次开发 —— 1、Windows10搭建Vs2017-QGis环境(附Vs2017环境效果)(附:Qt助手加入QGisA接口说明文档)

1362

lua windows开发环境搭建

7、luarocks安装库时,有些需要编译,需要安装编译环境,这里记录一个简单的办法,安装Dev C++软件,找到x86_64-w64-mingw32-gcc.exe所在的目录,设置到环境变量中。8、安装luasockt,--tree指定安装目录,指定到lua53.exe上一级目录中,否则require时找不到文件。2、将两个压缩包的文件解压到同一个文件夹内,并设置系统环境变量。3、下载luarocks包管理工具,解压后设置系统环境变量。5、配置luarocks指定lua环境目录,执行命令。

qq_35822551的博客 1353

运动想象 (MI) 分类学习系列 (19) : EEG-TransNet

本文提出了一种基于注意力机制的卷积神经网络(EEG-TransNet),用于运动想象脑电图(MI-EEG)解码。该方法创新性地通过平均池化和方差池化提取多模态时间信息,并结合自注意力模块捕获长期依赖关系。消融实验表明,方差池化比最大池化更有效(p<0.05),且注意力模块和卷积编码器对特征判别性至关重要。可视化分析验证了该方法能学习到更具判别性的紧凑特征。该工作为MI-EEG解码提供了新的多尺度时间信息融合视角,代码已开源。

走在深度学习前沿的小宋 358

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Windows下用SciTE搭建Lua开发环境:从安装到第一个Hello World程序

本文详细介绍了在Windows平台使用SciTE搭建Lua开发环境的完整流程,从安装配置到编写第一个Hello World程序。Lua作为轻量级脚本语言,结合SciTE编辑器的高效特性,为开发者提供了理想的开发体验。文章包含安装指南、环境配置、基础编程示例及常见问题解决方案,帮助初学者快速入门Lua开发。

snow3的博客 344

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

luarocks 库windows 安装使用

LuaSocket 这个是Lua扩展库添加的程序,具体可以百度一下,在linux环境中他是比较容易安装和使用的,今天研究了一下在windows安装, 发现比较麻烦,所以先记录一下! 这是官方下载地址:https://luarocks.org/modules/luarocks/luasocket https://luarocks.org/manifests/luarocks/luasocket-...

CodeP1G的博客 3725

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Lua Socket在Windows平台下的使用

在上一篇博文中介绍了VS2015+Lua5.1.5环境的搭建,最后介绍了Lua解释器的创建。本文将继续介绍Lua的一个比较实用的拓展库Lua Socket在Windows下平台的使用。在网上查看了许多关于Lua Socket的安装,发现大部分都是在Linux下的安装,关于在Windows平台下的使用说明很少,而且发现问题挺多。本文将介绍一个极其简单的方式介绍Lua Socket在Windo

代码人生 6555
上一篇: 【工具】使用FFmpeg压缩视频
下一篇: ureal engine 4.25.0安装过程
eclipse_c
博客等级 码龄14年 28粉丝 162原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值