luasocket-2.0.2中的`SIGPIPE`:未声明的标识符

我正在尝试编译luasocket-2.0.2(或:luasocket),但在尝试这样做时,一些宏似乎未定义。即:

标识符“SIGPIPE”未定义
标识符“F_GETFL”未定义
标识符“O_NONBLOCK”未定义
标识符“F_SETFL”未定义

如果我在谷歌上搜索这个,我会看到信号头文件应该被包含,但我没有改变任何代码或任何事情,正如您所期望的那样,头文件已被包含:

#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”未定义  socket  e:\git\luasocket-2.0.2\src\usocket.c    80
…
点赞
用户35092
用户35092

问题描述:

好的,这是关于编译标志的问题。我无法从这里查看您的系统,但 /I 标志是问题发生的地方,问题在于 signal.h 不在这些目录中的任何一个目录中。

这可能是软件包本身中的某种错误。向开发人员报告此问题,在此期间,找到 signal.h 并将其复制到其中一个包含目录中作为解决方法。

2016-12-17 17:04:17
用户2878070
用户2878070

似乎 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
2016-12-17 17:14:33