在 g++ 上编译时出错

Error when compiling on g++

对于我的项目,我需要在 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

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

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

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

你也可以试试_WIN32

@NickLamp 已经解释了你编译失败的原因,但是只有那个宏不会让你的程序在 Xnix 中正常运行。

看来您正在构建 CLI 界面,而不是使用 OS 特定的 API,我建议您使用一些跨平台的 CLI 库: Cygwin + ncurses 或 pdcurse.

详情见http://www.cplusplus.com/articles/4z18T05o

与 Java 不同,C 和 C++ 不是平台独立语言。他们的一些东西,如库文件、预定义的对象和函数可能因操作系统而异。

如果您想在 Ubuntu 上编译您的文件,那么您必须从文件中删除 <windows.h> 头文件或使用一些技术(like - macros)确保不在 Windows 以外的操作系统上使用 <windows.h>。因为这个头文件是严格为 Windows 设计的。