2016-02-27 63 views
0

對於我的項目,我需要在Microsoft Visual Studios(windows)和g ++(unix)上編譯我的程序。在窗口時在g ++上編譯時出錯

我的程序工作,但是當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

+4

呃,你正在linux下編譯並試圖包含一個名爲「windows.h」的文件 - 猜錯哪裏是^ ^ – Anedar

回答

3

不能使用<windows.h>一臺Linux機器

使用ifdef上選擇命令運行哪些預處理器。更具體地說,您可以使用宏定義的__WINDOWS__來檢查操作系統是否爲windows。大多數編譯器

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

您也可以嘗試_WIN32

0

的原因爲您編譯失敗已被@NickLamp解釋,但只有宏不會讓你的程序正常工作在xNix系。

看起來您正在構建CLI界面,而不是使用特定於操作系統的API,我建議您使用一些跨平臺CLI庫: Cygwin + ncurses或pdcurse。

有關詳細信息,請參見http://www.cplusplus.com/articles/4z18T05o

1

與Java不同,C和C++不是平臺獨立語言。他們的一些功能 - 庫文件,預定義的對象和功能可能因操作系統而異。

如果你想編譯您的文件上Ubuntu的,那麼你將不得不從您的文件中刪除<windows.h>頭文件,或者使用一些技術(像 - 宏),確保對在使用<windows.h> Windows以外的操作系統。因爲這個頭文件是嚴格爲Windows設計的。