无法打开包含文件:'unistd.h':没有这样的文件或目录

Posted

技术标签:

【中文标题】无法打开包含文件:\'unistd.h\':没有这样的文件或目录【英文标题】:Cannot open include file: 'unistd.h': No such file or directory无法打开包含文件:'unistd.h':没有这样的文件或目录 【发布时间】:2014-05-07 11:55:38 【问题描述】:

libpng 安装到我的计算机后,我在Windows 7 SP1 平台上使用#include <png.h> 并使用Visual Studio Ultimate 2013 将它包含到我的项目中。

但是在构建时,我收到了这个错误:

C1083: 无法打开包含文件: 'unistd.h': 没有这样的文件或目录

我该如何解决这个问题?网上还没找到解决办法?

【问题讨论】:

我最后关注了this proposition。 我从来没有遇到过使用 Visual Studio 构建 libpng 的问题。平台特定部分周围可能有一个#ifdef,您只需提供正确的定义即可选择正确的平台。 @RetiredNinja,感谢您的回复,libpng 是否允许从位图转换为 png? 嗯,它不叫 lippngandbmp,所以不直接,不。如果内存中有 bmp 文件,使用 libpng 编写 png 文件并不难。 【参考方案1】:

unistd 中的“uni”代表“UNIX”——在 Windows 系统上找不到。

最广泛使用的可移植库应提供替代构建或检测平台,并且仅尝试使用将提供的标头/函数,因此值得检查文档以查看您是否错过了某些构建步骤 - 例如也许运行“make”而不是加载“.sln”Visual C++ 解决方案文件。

如果您需要自己修复它,请删除包含并查看实际需要哪些功能,然后尝试找到 Windows 等效项。

【讨论】:

非常感谢您的回复,我最后关注了this proposition。 哦 - 很好的发现 - GNU、Cygwin 和其他一些产品近似于 Windows 上的 UNIX 环境。 Microsoft Visual C++ 编译器和操作系统它本身似乎不遗余力地不...(例如,缺少 posix 线程、Winsock / BSD 不兼容、缺少 int8_t 等的标头)。 @TonyD 从 Visual Studio 2010 开始,包含 int8_t 和类似类型系列的标头包含在内,当时 MS 最终添加了对 <stdint.h> 的支持【参考方案2】:

如果您在项目中使用 ZLib,那么您需要找到:

#if 1

在 zconf.h 中并用 :

替换(取消注释)它
#if HAVE_UNISTD_H /* ...the rest of the line

如果不是 ZLib,我想你应该找到一些替代方法来做到这一点。总账。

【讨论】:

嗨,我知道这是一个相当古老的问题,但如果你能帮助我,我会很高兴。我正在尝试构建对 Zlib 和 Jasper 都有依赖性的 LibRaw。当我不使用 jasper(它是可选的)时,即不定义 USE_JASPER 一切都会正确构建,但是使用 jasper 我会遇到与提问者相同的错误。那么这个定义发生的 IDK 有没有一种全局方法来禁用它?

以上是关于无法打开包含文件:'unistd.h':没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

Qt交叉编译Raspi3 - 致命错误:unistd.h:没有这样的文件或目录

无法打开包含文件:'ctype.h':没有这样的文件或目录

无法打开包含文件:'ntddk.h':没有这样的文件或目录

无法打开包含文件 - 'gtest.h' - 没有这样的文件或目录

Qt无法打开包含文件:'QNetworkAccessManager':没有这样的文件或目录

致命错误 C1083:无法打开包含文件:'io.h':没有这样的文件或目录