2010-03-07 76 views
0

剛剛開始使用C++。我正在使用Eclipse CDT開發OSX。我有一個包含一些自定義類和兩個文件「Test.hpp」和「Test.cpp」的項目 - 稍後用我的main()方法運行一些我已經在這兩個文件中定義和實現的測試。C++:無法從命令行鏈接

我可以在沒有問題的情況下編譯並運行Eclipse,但是當我嘗試從命令行使用「g ++ Test.cpp」進行編譯時,出現很多鏈接錯誤,這些鏈接基本上列出了所有在Test.cpp爲未定義的符號。

我編的幾個基本程序在命令行類似的方式(一個頭文件和一個實現文件)沒有任何問題,但我不明白,爲什麼這個人會無法正常工作。請幫忙!

編輯:從我的措辭不清楚,但是我也有其他的源文件。接受的答案做了訣竅:「g ++ Test.cpp Other1.cpp Other2.cpp」。謝謝。

+0

向我們展示命令行 – 2010-03-07 07:52:50

+0

也許還會顯示一些代碼。 test.cpp是唯一包含所有需要的函數定義的翻譯單元嗎?您編寫了「* Test.cpp中定義的或*引用的所有文章的列表」。所以Test.cpp使用了Test.cpp之外定義的*外部函數?那就是你的問題。 – sellibitze 2010-03-07 07:56:42

+0

抱歉沒有發佈輸出。我想我總結說我調用了「g ++ Test.cpp」,並在我的項目中的「未定義符號」下列出了所有方法的列表。 '現在修好了,我希望這足以幫助任何有相同錯誤的人。 – Imran 2010-03-07 08:21:03

回答

4

命令 'G ++ Test.cpp的' 不都編譯和鏈接。如果你有很多的源文件,你應該將Test.cpp與它們連接起來,比如'g ++ Test.cpp other1.cpp other2.cpp',或者只是編譯所有文件並將它們連接在一起,比如'g ++ Test.o other1.o other2的.o」。

+0

感謝這是我需要做的! – Imran 2010-03-07 08:13:05

0

你的文件位於哪裏? .h文件是否在你的.cpp文件的同一目錄中?如果否:你是否使用gcc的-I選項嘗試?如果是:是你的工作目錄在同一目錄中,那麼你的源文件?

0

如果調用G ++一樣,它不僅編譯的代碼,但也試圖將結果鏈接到一個可執行文件。如果你的test.cpp需要你定義的其他函數,這就解釋了你的觀察。沒有鏈接的編譯可以通過添加-c開關來實現。或者你可以用所有需要的cpp文件調用g ++。