2013-05-01 19 views
1

我已經使用LuaForWindows安裝了Lua 5.1,但在安裝的內容中沒有看到luasocket.h,看起來我無法在我的Visual Studio C++項目中使用它。如何從我的VS C++項目中使用luasocket,從LuaForWindows找到luasocket.h或爲Lua 5.2創建LuaSocket。

因此,我正在嘗試構建並從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/)使用它,或者我的構建有問題。蝙蝠,將解決我的問題?

+0

使用LuaSocket怎麼樣? **'clibs \ socket \\'**目錄中有一個DLL。 – hjpotter92 2013-05-01 17:02:06

+0

@ hjpotter92 - 我的C++程序試圖包含luasocket.h,但沒有找到。我會查看它是否可以從DLL中解析頭文件,但是我有我的疑惑。 – 2013-05-01 19:49:49

回答

2

(於2015年10月2日更新)前面所述的更改已合併到Luasocket master branch中,它可以在Windows上使用Lua 5.2進行編譯。

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

您需要使用this branch如果你想編譯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調用,所以我patched luasocket包括那些(不知道這是VS的問題)。你可能想嘗試編譯這個分支:https://github.com/pkulchenko/luasocket/commits/lua52-mingw

+0

我確實使用了那個分支,當我嘗試從頭構建它時,這是我遇到問題的地方。 – 2013-05-01 19:48:33

+0

任何想法當你的變化將在不穩定的分支? – 2013-05-10 01:08:38

+0

@JamesBlack,不幸的是,不知道。我會發送一個pull請求,但是由Diego來合併併發佈一個新版本。 – 2013-05-10 04:07:54

相關問題