无法打开包含文件:'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:没有这样的文件或目录
无法打开包含文件 - 'gtest.h' - 没有这样的文件或目录