【问题标题】:Compiling C with MS Visual C++ 2010 'sys/resource.h': No such file用 MS Visual C++ 2010 'sys/resource.h' 编译 C:没有这样的文件
【发布时间】:2013-09-07 07:51:24
【问题描述】:

我正在尝试在 http://www.wfg.csse.uwa.edu.au/hypervolume/ 上 MEX(编译)链接为“Metric WFG 实现”的实现

使用 Microsoft Visual C++ 2010 编译器执行此操作时,我收到有关 sys/time.h 和 stdbool.h 的错误。

我使用以下内容创建了自己的 stdbool.h:

#pragma once

#define false   0
#define true    1

#define bool int

并检查 sys/time.h 到 time.h。

但是我现在遇到了以下问题:

wfg.c(37) : fatal error C1083: Cannot open include file: 'sys/resource.h': No such file or directory 

我尝试删除 sys/ 但它给出了相同的错误。

有人知道解决办法吗?

谢谢

【问题讨论】:

  • sys/time.hsys/resource.h 的使用似乎仅限于主程序wfg.c 来衡量时间和资源使用情况。您可能可以注释掉这些部分并尝试再次编译...也就是说我到目前为止还没有看到这与 MATLAB 有什么关系
  • 嗨 Amro,这是 Matlab 相关的,因为我正在尝试将它 MEX 以在 Matlab 下使用。你删除资源使用的东西的想法很好,我试过了,但是没有用,或者我没有足够的经验知道要删除什么,有什么想法吗?
  • 这个项目显然是用 GCC 作为编译器编写的。除了注释前面提到的 POSIX 内容之外,您还必须将所有局部变量声明移动到每个函数的开头(MSVC C 编译器仅支持 C89,因此它不会接受如下声明:for (int i;;))。事实上,Makefile 调用了gcc -std=C99,而众所周知,MSVC 并不完全支持。一旦你做了这些改变,我想你会设法编译它......作为最后一步,尝试将所有文​​件重命名为 .cpp 以编译为 C++ 而不是 C,这可能会给你更少的编译错误
  • Amro,谢谢您的回复。明天我会尝试你的所有建议,我不是 C/C++ 开发人员,所以这种东西对我来说很难,特别是当它是别人的代码时。

标签: c++ c matlab visual-c++ mex


【解决方案1】:

sys/resource.h是posix头文件,VC2010当然找不到。如果您坚持使用 Windows,也许您应该安装 cygwin 来完成这项工作。

【讨论】:

  • 嗨,我坚持使用的是 Matlab。有什么方法可以获取 Windows 编译器或将 resource.h 文件放在同一目录中?
  • 这就像在说“我需要一名脑外科医生,但我只有一名全科医生可用。有没有办法我可以在他办公室的墙上贴一张假文凭,这样他就可以对我的大脑进行手术?”通常,头文件是接口的声明,而不是实现。放入一个标头声明在您的系统上没有可用实现的接口不会神奇地实现它们。
  • @Derek 没办法。你可以让 cygwin 来做这件事或得到一个 linux 操作系统。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
相关资源
最近更新 更多