对于我的项目,我需要在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文件:
答案 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。