【问题标题】:Cannot find direct.h找不到直接.h
【发布时间】:2011-09-05 19:43:24
【问题描述】:

由于某种原因,当我尝试编译我的代码时,我得到了这个错误:

致命错误:direct.h:没有这样的文件或目录 编译终止。

我在 linux 上使用 g++ (GCC) 4.6.0 20110509 (Red Hat 4.6.0-7)

【问题讨论】:

  • 您需要哪个direct.h?是你团队中的某个人写的吗?或eglibc-2.12.1/sysdeps/unix/sysv/direct.hlinux-2.6/fs/nilfs2/direct.h<linux_headers>/include/config/pci/direct.h ?你的#include 线是什么样的?你的Makefile 是什么样的?
  • 你想引入什么符号?
  • 您需要提供更多详细信息。 direct.h 是您自己的标头之一还是您尝试使用 3rd 方库?
  • @sarnold 该行是#include 并且还没有生成文件。我没有处理这部分代码,所以我不确定他使用标头做什么,但我猜是文件 IO,因为代码是用于 INI 阅读器的。最坏的情况是我等到明天让他修复它,但是当他破坏构建时,这会使我的代码测试变得更加困难。编辑:我知道它不是我们的标头之一,我们使用的唯一库是 SFML,它也不是其中的一部分。
  • 我敢打赌这是一个特定于 Windows 的标题。

标签: gcc compiler-errors


【解决方案1】:

我获取了 SWMM5 源代码并按照自述文件和一些小修复修改了文件。在 linux 中,CLE 版本似乎根本不需要 direct.h。我已经测试了 EPA 提供的几个示例 https://www.epa.gov/sites/production/files/2014-05/epaswmm5_apps_manual.zip

您可以获取文件from here

如果有问题,请告诉我。

【讨论】:

    【解决方案2】:

    一般是微软Windows提供的C/C++头文件,不能在linux下工作。

    reference at wikipedia

    您可以使用 unistd.h 来替换 direct.h 中的操作,例如 mkdir、rmdir 等。

    【讨论】:

      【解决方案3】:

      direct.h 是 Digital Mars 编译器的一部分,而不是 gcc。

      它的大多数函数在 posix 标准化的 linux 上具有相似的名称。阅读手册页,例如getcwd , rmdir, mkdir ,或澄清您需要哪些功能的问题。

      首先,只需删除包含并查看您遇到的其他错误,然后从那里开始工作。

      【讨论】:

      • 谢谢,我查看了他的代码并更改了一些东西,现在可以正常工作了。
      • 微软还为 Windows 开发提供了一个 direct.h 包含文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2019-11-21
      • 2012-12-29
      相关资源
      最近更新 更多