2011-12-09 121 views
4

我剛剛開始學習C++,並顯示我找到的代碼的輸出this method。這工作時,我第一次編譯一個Programme.cpp的結構:如何從代碼塊中的.cpp文件創建.exe文件?

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout << "Hello World!"; 
    return 0; 
} 

它給了我一個.exe文件,我開了,跑了,並得到了一個可愛的「Hello World!」出現,但是當我試圖編譯的第二個,Variables.cpp:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int a, b; 
    int result; 

    a=5; 
    b=2; 
    a=a+1; 
    result=a-b; 

    cout << result; 

    return 0; 
} 

我沒有得到一個.EXE好,所以可能不知道如何打開它。我嘗試重新編譯Programme.cpp的結構(刪除所有關聯的文件後),但現在不再創建.exe。唯一創建的文件是Programme.o和Variables.o的結構(在子目錄obj \ Debug中)。

我能找到的似乎相似的唯一問題是this,但問題似乎有點不同,並且我嘗試刪除其中一個文件(所以只有一個Programme.cpp或Variables.cpp結構在文件夾中),我仍然有相同的結果。

此外,這兩個文件都沒有編譯器錯誤,我不認爲我在代碼塊之間更改了程序結構和一切不工作的任何選項。

感謝,

Dalkius

編輯:構建日誌:

Compiling: Structure of a Programme.cpp 
Process terminated with status 0 (0 minutes, 0 seconds) 
0 errors, 0 warnings 

Compiling: Variables.cpp 
Process terminated with status 0 (0 minutes, 0 seconds) 
0 errors, 0 warnings 

編輯2: '完全命令行' 構建日誌:

Build started on: 14-12-2011 at 07:57.39 
Build ended on: 14-12-2011 at 08:01.03 
-------------- Clean: Debug in cplusplus.com Tutorial --------------- 
Done. 
mingw32-g++.exe -Wall -g -c "D:\My Documents\0HOME\Programming\C++\Code Blocks\cplusplus.com Tutorial\Structure of a Programme.cpp" -o "obj\Debug\Structure of a Programme.o" 
Process terminated with status 0 (0 minutes, 1 seconds) 
0 errors, 0 warnings 
mingw32-g++.exe -Wall -g -c "D:\My Documents\0HOME\Programming\C++\Code Blocks\cplusplus.com Tutorial\Variables.cpp" -o obj\Debug\Variables.o 
Process terminated with status 0 (0 minutes, 0 seconds) 
0 errors, 0 warnings 
+0

幫助我們通過複製和粘貼構建日誌來幫助你解決這個問題。 – greatwolf

+1

你還可以打開完整的編譯器日誌嗎?你可以在'Settings-> Compiler/Debug-> Other settings tab'下找到它。確保編譯器日誌記錄設置爲「完整命令行」。然後在完成重建之後,使用構建日誌中顯示的完整命令行更新您的問題。 – greatwolf

+0

@Victor T.我在選項更改後添加了構建日誌。它與我看起來沒有太大區別,但我已經檢查了我所看到的有關命令行的所有選項(將生成日誌保存爲HTML - >在生成的HTML中始終輸出完整的命令行)。 – Dalkius

回答

4

從查看更新的構建日誌中可以看出,鏈接步驟並未執行以生成最終的可執行文件。有幾件事你可以檢查和一些想法嘗試:

  • 確保鏈接器的可執行文件和正確的路徑設置,以便C :: B可以找到它。對於MinGW,鏈接器通過名爲'g ++。exe'的編譯器驅動程序調用。
  • 檢查在'類型'下選擇了'控制檯應用程序'。
  • 如果一切看起來不錯,但它仍然沒有鏈接嘗試創建一個新的空白控制檯項目。將現有文件添加到該項目並嘗試構建它。
  • 嘗試從'cmd'命令提示符手動構建它以確保工具鏈本身正在運行。你應該在你的mingw安裝下找到'mingwvars.bat'腳本。運行該腳本以打開適當的命令行環境。使用此命令做一個簡單的測試編譯:

CD 「d:\我的文檔\ 0HOME \程序\ C++ \代碼塊\ cplusplus.com教程」
G ++ EXE -Wall -g變量。 CPP -o Variables.exe

最後,這是你的日誌應約看時,它的建立正確,如: C::B build log

+0

謝謝,我現在正在工作。不要以爲我完全確定如何,但感謝您的幫助。 – Dalkius

+0

@Dalkius你可以接受這個作爲答案,如果它爲你做了詭計。 – greatwolf

1

EXE文件大多是打造每當你運行代碼的時候。嘗試找到已安裝或複製C++程序文件的程序的exe文件。

1

我不太熟悉codeblocks,但我會盡力幫助解釋編譯器在做什麼。它創建的那些.o文件稱爲對象文件。高級編譯工作原理如下:

1)您的源代碼get由編譯器編譯。

2)編譯器會解釋你的代碼,併爲你擁有的每個文件(一般來說)創建一個對象(或.o文件)。

3)這些文件在部分編譯過程中被「鏈接」在一起,稱爲「鏈接器」。

4)最後,鏈接器輸出你的.exe文件。當然,更多的還有(如庫文件,預編譯的dll,預處理等),但出於您的目的,您可以像剛剛開始時那樣考慮它。

我的猜測是你可能意外地用codeblocks鏈接器修改了某些東西,或者它在錯誤的位置鏈接文件 - 甚至連接器都會拋出一個錯誤(儘管大多數IDE會通知你)。再次,我不幸不太熟悉代碼塊。

如果在代碼塊中有任何方法觸發「乾淨」,您也應該試試並嘗試重建。這將刪除(清除)上次構建時可能仍存在的任何舊文件。

+0

我試過清洗,沒有任何改變。我還在構建選項的基礎上找到了關於鏈接器的一些內容,但是我不知道該如何處理,而且我很擅長單獨留下那些東西。 – Dalkius

0

建設程序後,生成日誌,你可以看到「執行:」哪裏您可以 找到您的程序剛創建的.exe文件的路徑。