LuaRocks安装LuaSocket失败求助:编译wsocket.c报错
解决Windows MinGW编译LuaSocket时ERROR_NOT_ENOUGH_MEMORY未声明的问题
我之前也碰到过类似MinGW编译Windows平台Lua库的坑,给你几个可行的解决思路:
1. 手动补充缺失的错误常量定义
这个错误是因为ERROR_NOT_ENOUGH_MEMORY是Windows系统特有的错误码,LuaSocket的wsocket.c文件里没显式引入相关定义,MinGW默认头文件也没自动导出它。你可以这么操作:
- 找到LuaSocket源码里的
src/wsocket.c文件 - 在文件开头的include语句之后,添加一行:
#define ERROR_NOT_ENOUGH_MEMORY 14 - 保存后重新尝试编译安装
2. 给编译命令添加Windows版本定义参数
MinGW需要明确指定Windows版本才能导出全部系统常量,你可以在LuaRocks安装时传递编译参数:
luarocks install luasocket CFLAGS="-D_WIN32_WINNT=0x0501"
0x0501对应Windows XP,足够覆盖这个错误常量的定义;如果你的系统是Win10,也可以设为0x0A00(Win10版本号),同样能解决问题。
3. 直接用预编译的二进制包省事儿
如果不想折腾编译环节,你可以找针对Lua 5.1的Windows预编译版LuaSocket:
- 把下载好的
socket.dll放到Lua安装目录的clibs文件夹里 - 把
socket目录(包含Lua脚本文件)放到Lua的lua文件夹里 - 这样直接就能调用LuaSocket,不用再走编译流程
试一下上面的方法,应该能搞定你遇到的编译错误。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

