當我試圖運行下面的C++程序:UPDATE(更新代碼,因爲過去的紐帶有一些錯誤):http://pastie.org/private/pdpfpzg5fk7iegnohebtqUPDATE:C++未定義參考
我得到如下:
UPDATE
出現的現在如下錯誤:
對此有何看法?
謝謝。
當我試圖運行下面的C++程序:UPDATE(更新代碼,因爲過去的紐帶有一些錯誤):http://pastie.org/private/pdpfpzg5fk7iegnohebtqUPDATE:C++未定義參考
我得到如下:
UPDATE
出現的現在如下錯誤:
對此有何看法?
謝謝。
你不是在GradeBook.o鏈接使你得到一個undefefined參考。 嘗試
g++ GradeBookMain.cc GradeBook.cc -o GradeBookMain
您還在GradeBook.h
引用一個我最喜歡的IRC機器人:未定義的引用是鏈接器錯誤。這不是編譯錯誤。 #包括沒有幫助。您沒有在錯誤消息中定義事件,您忘記鏈接定義它的文件,忘記鏈接到定義它的庫,或者如果它是靜態庫,則鏈接器命令行上的順序不正確。檢查哪一個。
你沒有告訴你的編譯器在哪裏可以找到GradeBook
構造函數定義(因此是「未定義的引用」)。您需要將所有源文件分別傳遞給編譯器,或者爲所有編譯單元創建中間目標文件,並將它們鏈接在一起。
有效,最簡單的方法是這樣的:
g++ GradeBookMain.cc GradeBook.cc -o GradeBookMain
C++有一個錯字 「maximun」,而不是 「最大」 是區分大小寫的。因此,例如,您可以顯示消息,但您定義的是DisplayMessage。這是兩個截然不同的功能。您應該將DisplayMessage的定義更改爲displayMessage,或者將其稱爲DisplayMessage而不是displayMessage
您還需要在GradeBook.cc中進行編譯。
目前類本身沒有被編譯或鏈接,因此,鏈接器無法找到GradeBook類 - 導致它抱怨。
你的編譯器告訴你的是,GradeBook類是定義的,並且在編譯階段一切正常,但是當需要鏈接完整的可執行程序時,它無法找到該類的實際代碼。這是因爲您只編譯和鏈接GradeBookMain.cc而不是GradeBook.cc。您可以編譯,並在同一時間這樣的鏈接他們兩個:
g++ GradeBookMain.cc GradeBook.cc -o program
或者你可以單獨編譯它們,然後連結在一起,
g++ -c GradeBookMain.cc -o GradeBookMain.o
g++ -c GradeBook.cc -o GradeBook.o
g++ GradeBookMain.o GradeBook.o -o program
請添加某種形式的tabification到您的代碼。現在閱讀很痛苦。此外,您應該只能將GradeBook類定義和導致鏈接器錯誤的行添加到此問題中,從而避免潛在的答覆者不必單擊鏈接來獲取有關該問題的更多信息。 – 2011-01-26 11:50:21
(1)請發佈您的代碼_here_。讓我們難以找到並閱讀你的代碼是沒有用的。 (2)複製和粘貼在計算機上無法正常工作?你有沒有發佈截圖的原因? – 2011-01-26 11:50:33
@詹姆斯麥克奈利斯。只是沒有想到在發佈問題時粘貼在pastie上的屏幕截圖。謝謝。 – Simplicity 2011-01-26 11:52:34