Как мне использовать luasocket из моего проекта VS C++, либо найти luasocket.h из LuaForWindows, либо собрать LuaSocket для Lua 5.2

Я установил Lua 5.1 с помощью LuaForWindows, но я не вижу luasocket.h в том, что было установлено, поэтому, похоже, я не могу использовать его в своем проекте Visual Studio C++.

Итак, я пытаюсь собрать и получил последнюю версию с github для Lua 5.2, хотя она находится в разработке, поскольку я не могу найти исходный код для Lua 5.1 на sourceforge.

Когда я захожу на http://luaforge.net/projects/luasocket/, я возвращаюсь к Страница LuaSocket.

Итак, я собрал Lua 5.2.2, и это мой build.bat для luasocket:

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, которая решит мою проблему?


person James Black    schedule 01.05.2013    source источник
comment
Как использовать LuaSocket? В каталоге `clibs\socket\` есть DLL.   -  person hjpotter92    schedule 01.05.2013
comment
@ hjpotter92 - Моя программа на C++ пытается включить luasocket.h, но не находит. Я посмотрю, сможет ли он разрешить заголовочный файл из DLL, но у меня есть сомнения.   -  person James Black    schedule 01.05.2013


Ответы (1)


(Обновлено 02.10.2015) Описанные ранее изменения были объединены в главную ветку luasocket, которая компилируется с Lua 5.2 в Windows.

(предыдущая версия ответа, которая больше не применима)

Вам нужно использовать эту ветку, если вы хотите скомпилировать luasocket с Lua 5.2. Он включает файл решения для VisualStudio.

Я не компилировал эту ветку с помощью VisualStudio, но я скомпилировал ее с помощью mingw и использовал с Lua 5.2 в Windows.

Вот список флагов сборки, которые у меня есть для 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, чтобы включить их (не конечно, если это проблема и для VS). Вы можете попробовать скомпилировать эту ветку: https://github.com/pkulchenko/luasocket/commits/lua52-mingw.

person Paul Kulchenko    schedule 01.05.2013
comment
Я использовал эту ветку, и именно здесь у меня возникла проблема, когда я пытаюсь создать ее с нуля. - person James Black; 01.05.2013
comment
Есть идеи, когда ваше изменение будет в нестабильной ветке? - person James Black; 10.05.2013
comment
@JamesBlack, к сожалению, без понятия. Я отправлю запрос на вытягивание, но Диего должен объединить и выпустить новую версию. - person Paul Kulchenko; 10.05.2013
comment
К вашему сведению: эти изменения были включены в luasocket 3.0 (доступно на github) - person Paul Kulchenko; 06.09.2013
comment
ваша ссылка на эту ветку теперь 404 - person Epirocks; 02.10.2015
comment
@Epirocks, эти изменения были объединены в основную ветку luasocket, так что ветка lua52-mingw больше не нужна и удалена, чтобы избежать путаницы. Я обновлю ответ. - person Paul Kulchenko; 02.10.2015