2

LuaForWindows を使用して Lua 5.1 をインストールしましたが、インストールされたものに luasocket.h が表示されないため、Visual Studio C++ プロジェクトからそれを使用できないようです。

だから、ビルドしようとしていて、Lua 5.2 の最新バージョンを github から入手しましたが、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 branchにマージされ、Windows 上の Lua 5.2 でコンパイルされます。

(回答の以前のバージョン。これはもはや適用されません)

luasocket を Lua 5.2 でコンパイルする場合は、このブランチを使用する必要があります。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_ntopinet_pton呼び出しにも遭遇したので、それらを含めるようにluasocket にパッチを当てました (これが VS の問題かどうかはわかりません)。このブランチでコンパイルしてみてください: https://github.com/pkulchenko/luasocket/commits/lua52-mingw

于 2013-05-01T17:36:40.127 に答える