2

我已经使用 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 的 build.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

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

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

4

1 回答 1

3

(2015 年 10 月 2 日更新)前面描述的更改已合并到 luasocket master 分支中,该分支在 Windows 上与 Lua 5.2 一起编译。

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

如果你想用 Lua 5.2 编译 luasocket,你需要使用这个分支。它包括 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_MODULEluasocket 目前需要它,也没有ws2_32在库列表中看到。

我也遇到了丢失inet_ntopinet_pton呼叫,所以我修补了 luasocket以包括那些(不确定这是否也是 VS 的问题)。您可能想尝试使用此分支进行编译:https ://github.com/pkulchenko/luasocket/commits/lua52-mingw 。

于 2013-05-01T17:36:40.127 回答