c++ - mingw/include/c++/cstdlib : stdlib. h: 没有那个文件或目录

标签 c++ gcc cmake mingw fedora

我正在尝试交叉编译 OpenImageIO对于使用 MinGW 的 Fedora 26 上的 64 位 Windows。在使用 yum 检索依赖项的 mingw 版本后,我运行了 mingw64-cmake,然后是 make。但是,我立即收到有关未找到 stdlib.h 的编译错误。

[  0%] Built target CopyFiles
[  0%] Building CXX object src/libutil/CMakeFiles/OpenImageIO_Util.dir/argparse.cpp.obj
In file included from .../oiio/src/libutil/argparse.cpp:36:0:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/c++/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
#include_next <stdlib.h>
              ^~~~~~~~~~
compilation terminated.

我已确认至少在 /usr/include//usr/x86_64-w64-mingw32/sys- 中找到了 stdlib.h root/mingw/include/c++/ 给出编译器错误的文件也位于此位置。

为什么我仍然收到错误 stdlib.h: No such file or directory

更新: 我做了额外的研究并了解了以下内容:预处理器指令 #include_next 的行为类似于 #include 指令,除了它明确地从要搜索命名文件的路径中排除包含文件的目录。

这可以解释为什么 cstdlib 没有从同一文件夹中找到 stdlib.h。但是 cstdlib 是 MinGW 的一部分,而不是我要编译的代码的任何部分。所以我仍然不知道这里出了什么问题或如何修复此错误。

编辑:这里是编译器版本信息,以防有用:https://pastebin.com/PZiXS2fg .这是全新安装,因此应该没有任何异常。

最佳答案

我解决了,可以重新编译

解决方案(对我来说)是将变量 CPLUS_INCLUDE_PATH 添加到路径并将其设置为 MinGW c++ 包含目录,对我来说:C:\MinGW\lib\gcc\mingw32\6.3.0\include\c++.

我希望它对你也有用。

关于c++ - mingw/include/c++/cstdlib : stdlib. h: 没有那个文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45245923/

相关文章:

c++ - llvm clang struct 动态创建函数

c++ - 在 C++ 中获取 DATETIME 戳的最简单方法

c++ - 如何在 Qt 中安全地调用断开连接?

c - getopt 跨平台兼容性

c++ - 对 Visual Basic 6 ListView 的自动化支持

gcc - 汇编未知助记符 AArch64 ARMv8

C 函数 fopen();错误: too many arguments to the function

configuration - 在不包装脚本的情况下让 CMake 从源代码中构建

Cmake 构建类型(RELEASE、DEBUG 等)编译器标志

windows - cmake:树外构建的问题