在g ++上编译时出错

时间:2016-02-27 04:57:50

标签: c++ g++ clang++

对于我的项目,我需要在Microsoft Visual Studios(windows)和g ++(unix)上编译我的程序。

我的程序在Windows上工作,但在g ++上我遇到以下错误:

utilities.cpp:4:21: fatal error: windows.h: No such file or directory 
#include <windows.h>

我觉得在分离头文件和utilities.cpp时我搞砸了。

这里的参考是globals.h和utilities.cpp文件:

http://imgur.com/a/GhhCl

3 个答案:

答案 0 :(得分:3)

你不能在linux机器上使用<windows.h>

使用ifdef选择运行的预处理程序命令。更具体地说,您可以检查操作系统是否是带有预定义__WINDOWS__宏的窗口。大多数编译器

#ifdef __WINDOWS__ 
#include <windows.h>
#endif

您还可以尝试_WIN32

答案 1 :(得分:1)

与Java不同,C和C ++不是平台无关的语言。他们的一些东西 - 库文件,预定义的对象和功能可能因操作系统而异。

如果要在 Ubuntu 上编译文件,则必须从文件中删除<windows.h>头文件或使用某些技术( like - macros < / em>)确保不在Windows以外的操作系统上使用<windows.h>。因为此头文件是严格设计用于Windows。

答案 2 :(得分:0)

@NickLamp解释了编译失败的原因,但只有那个宏不会使你的程序在Xnix中正常工作。

您似乎正在构建CLI界面,而不是使用特定于操作系统的API,我建议您使用一些跨平台的CLI库: Cygwin + ncurses或pdcurse。

有关详细信息,请参阅http://www.cplusplus.com/articles/4z18T05o