2016-12-17 12 views
3

Я пытаюсь скомпилировать luasocket-2.0.2 (или: luasocket), но по мере того как я пытаюсь сделать это, некоторые макросы кажутся неопределенными. А именно:'SIGPIPE': необъявленный идентификатор в luasocket-2.0.2

Если у меня это Google, я вижу, что для этого необходимо включить signal.h. Я не изменил код или что-нибудь, и, как и следовало ожидать, заголовки включены:

#include <string.h> 
#include <signal.h> 

#include "socket.h" 

Не совсем уверен, что я здесь отсутствует.

Я пытаюсь скомпилировать это для Windows.

Флаги компилятора:

/GS /analyze- /W3 /Zc:wchar_t /I"E:\git\luasocket-2.0.2\../luaext-linker/include" /ZI /Gm /Od /Fd"mime\Debug\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "MIME_EXPORTS" /D "MIME_API=__declspec(dllexport)" /D "_WINDLL" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa"mime\Debug\" /EHsc /nologo /Fo"mime\Debug\" /Fp"mime\Debug\mime.pch" 

Ошибки происходят в usocket.c проекта сокета:

"SIGPIPE" is undefined socket e:\git\luasocket-2.0.2\src\usocket.c 80 
... 
+0

опишете вашу проблему более подробно. Каким образом вы пытаетесь его построить, использовали флаги компилятора, точное сообщение об ошибке вместе с именем исходного файла и т. Д. – Sergio

+0

@Sergio Я добавил запрошенную информацию. Если есть больше, я могу добавить, пожалуйста, дайте мне знать. – displayname

ответ

0

Похоже, что usocket.c является источником, специфичным для Unix.

/*=========================================================================*\ 
* Socket compatibilization module for Unix 
* LuaSocket toolkit 

Вы не должны пытаться включить его в сборку, ориентированную на Win (если вы не используете Cygwin). Также socket.vcxproj не упоминает этот файл в источнике. Это подтверждает предыдущее предложение.

Если вы решили построил его с помощью win32.cmd сценария - правильный путь к префиксу, так как скрипт использует жёстко один:

make LUAPREFIX_win32='c:\cygwin\home\diego\vc12' LUAV=5.1 PLAT=win32 LUALIBNAME_win32=lualib.lib PLATFORM_win32=Debug install-both 
0

Хорошо, это в ваших флагов компиляции. Я не могу смотреть на вашу систему здесь, но флаги /I находятся там, где это происходит, и проблема в том, что signal.h не находится ни в одном из этих каталогов.

Это, вероятно, какая-то ошибка в самом пакете. Сообщите об этом разработчикам, и тем временем найдите signal.h и скопируйте его в одну из каталогов include в качестве обходного пути.

+0

Если некоторые из запрошенных заголовков пропущены - процесс останавливается намного раньше, а сообщение об ошибке сообщает о пропущенном заголовке, а не о незаявленных идентификаторах. – Sergio