我该如何在我的VS C++项目中使用luasocket?可以从LuaForWindows中找到luasocket.h,或者为Lua 5.2构建LuaSocket。

我使用LuaForWindows安装了Lua 5.1,但是我在安装中没有找到luasocket.h文件,所以我似乎无法从我的Visual Studio C++项目中使用它。

因此,我正在尝试构建,我从GitHub获取了Lua 5.2的最新版本,尽管它正在开发中,因为我在sourceforge上找不到Lua 5.1的源代码。

当我转到http://luaforge.net/projects/luasocket/时,它将我带回LuaSocket页面。

所以,我已经构建了Lua 5.2.2,并且这是我的luasocket构建.bat:

set INCLUDE=%INCLUDE%;C:\Users\me\Downloads\lua-5.2.2\src
echo %INCLUDE%
set LIB=%LIB%;C:\Users\me\Downloads\lua-5.2.2\src
echo %LIB%
ren unix.c unix.c00
ren usocket.c usocket.c00
cl /MD /O2 /W3 /c /nologo /DWIN32_LEAN_AND_MEAN *.c
ren mime.obj mime.o
link /DLL /OUT:socket.dll /base:0x67800000 /export:luaopen_socket_core *.obj mime.o msvcrt.lib lua5.2.lib wsock32.lib
link /DLL /OUT:mime.dll /base:0x67700000 /export:luaopen_mime_core mime.o msvcrt.lib lua5.2.lib

最大的问题是尝试编译一些c文件时出现'luaL_openlib未定义',并且'_luaL_openlib'是一个未解决的外部符号引用,但这些是相关问题。

我目前并不关心我使用的是Lua 5.1还是5.2,但我需要能够使用LuaSocket,所以是否有一种方法可以从LuaForWindows(https://code.google.com/p/luaforwindows/)使用它,还是我的build.bat存在问题,可以解决我的问题?

点赞
用户1442917
用户1442917

(2015年10月2日更新)之前描述的更改已合并到luasocket [master分支](https://github.com/diegonehab/luasocket/)中,该分支在Windows上与Lua 5.2编译。

(不再适用的先前版本的答案)

如果你想使用Lua 5.2编译luasocket,你需要使用[这个分支](https://github.com/diegonehab/luasocket/tree/unstable)。它包括一个VisualStudio的解决方案文件。

我没有用VisualStudio编译过这个分支,但是我用mingw编译过它,并在Windows上使用Lua 5.2。

这是我用mingw的构建标志列表:BUILD_FLAGS="-Wl,-s -O2 -shared -D LUA_COMPAT_MODULE -D IPV6_V6ONLY=27 -D WINVER=0x0501 -s;我还链接了-lwsock32 -lws2_32 -llua

在您的情况下,我没有看到必需的“LUA_COMPAT_MODULE”,它是当前luasocket所必需的,也没有看到“ws2_32”在库列表中。

我还遇到了缺少“inet_ntop”和“inet_pton”调用的问题,因此我[修补了luasocket](https://github.com/pkulchenko/luasocket/commit/5a58786a39bbef7ed4805821cc921f1d40f12068),以包括这些内容(不确定该问题是否也适用于VS)。你可以尝试用这个分支编译:[https://github.com/pkulchenko/luasocket/commits/lua52-mingw](https://github.com/pkulchenko/luasocket/commits/lua52-mingw)。

2013-05-01 17:36:40