【问题标题】:'SIGPIPE': undeclared identifier in luasocket-2.0.2'SIGPIPE': luasocket-2.0.2 中未声明的标识符
【发布时间】:2017-05-03 04:56:26
【问题描述】:

我正在尝试编译 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" 

socket项目的usocket.c出现错误:

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

【问题讨论】:

  • 更详细地描述您的问题。您尝试以什么方式构建它,使用的编译器标志,确切的错误消息以及源文件名等。
  • @Sergio 我已经添加了请求的信息。如果还有更多我可以添加的,请告诉我。

标签: c lua luasocket


【解决方案1】:

似乎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

【讨论】:

    【解决方案2】:

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

    这可能是包本身的某种错误。将此情况报告给开发人员,同时找到 signal.h 并将其复制到包含目录之一作为解决方法。

    【讨论】:

    • 如果某些请求的标头丢失 - 构建的进程会更早停止,并且错误消息会告诉您丢失的标头,而不是未声明的标识符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多