2016-09-20 198 views
0

:)非常感謝。將C++(.cpp)編譯爲.exe文件

我期待轉換成一個.cpp文件.exe文件。

我試着(MingW平臺)gcc和g ++。我也嘗試在Visual Studio中手動編譯它。

不幸的是這些編譯失敗(包括Linux和Windows上),因爲預編譯的頭不能定位:

stdafx.h: No such file or directory 

我已經試過手動下載(預編譯頭:#包括)和更改#include <stdafx.h>#include "stdafx.h"指向手動下載的預讀器的當前文件夾。這個'工作',但它編譯與大量的錯誤,可能是因爲它是一個錯誤版本的標題(只有我可以找到標題是在https://sourceforge.net

必須有一個更簡單的方法?

+4

預編譯頭'是一個Visual Studio的事情。如果您在Visual Studio中正確創建項目,它將創建您需要的所有文件,包括「stdafx.h」頭文件。 –

+1

只需刪除'#include「stdafx.h」'指令。你不需要它;它純粹是一種優化。 –

+1

^或者''#include '語句周圍使用'#ifdef WINVER',以保持代碼的可移植性。 –

回答

1

您可能使用了需要stdafx.h的項目模板。

要解決它,您可以刪除您的cpp文件中的#include "stdafx.h"

或者,在使用VS模板創建新項目時關閉Precompiled header選項。例如,Win32 Console Application模板:

enter image description here

enter image description here

+1

恐怕沒有問題,但OP很不清楚。 –

+0

項目模板和預編譯頭文件之間沒有關係(除了可以啓用/禁用**任何**項目類型的預編譯頭文件的使用外)。在這方面Win32控制檯項目沒有什麼特別之處。 – IInspectable

+0

仍然是假的。沒有模板*「需要」*使用預編譯頭文件。所有模板**都可以使用預編譯頭文件。使用標準的* Win32控制檯應用程序*模板(Visual Studio 2015),預編譯的頭文件**被默認用於控制檯應用程序。聽起來你聽起來很不舒服。 – IInspectable

1

stdafx.h中是用於precompiled header files的默認文件名。這是Visual Studio特定的優化,它將很少變化的頭文件編譯成二進制表示,以加快編譯速度。

一個預編譯頭文件的怪癖是,你必須在每個編譯單元的第一個非註釋/非空白行上包含用於create the precompiled header file的頭文件。由於這可能變得不切實際(例如,以源代碼形式使用第三方庫),編譯器允許您爲您包含頭文件。 /FI (Name Forced Include File)編譯器開關就是這樣做的。

從本質上講,解決問題的方法是:

  1. 到處卸下#include <stdafx.h>指令。
  2. [可選]在Visual Studio項目中啓用預編譯頭文件的創建。
  3. 使用Visual Studio中的/FI編譯器開關,如果你選擇在步驟創建預編譯的頭文件使用`「stdafx.h中」 2.