我正在尝试编译luasocket-2.0.2(或:luasocket),但是在尝试编译时,某些宏似乎未定义。即:
identifier "SIGPIPE" is undefined
identifier "F_GETFL" is undefined
identifier "O_NONBLOCK" is undefined
identifier "F_SETFL" is undefined
如果我用谷歌搜索,我看到那个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
...
最佳答案
好像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