我遇到了這個問題,當GCC編譯器連接兩個對象文件時,它似乎失敗了。目標文件foo1.cc
和foo2.cc
都包括名爲foo1.hh
的頭文件中的類。此外,頭文件foo.hh
還有一個對象實例的外部聲明,該對象實例出現在foo1.cc
中。如何使用相同的頭文件在C++中編譯和鏈接目標文件?
應該注意的是,頭文件foo.hh
只會在兩個源文件foo1.cc
和foo2.cc
之間定義一次。
當我編譯使用以下命令的源文件,一切似乎工作:
g++ foo1.cc foo2.cc
上面的命令會產生所謂的a.out
的可執行文件。
當我嘗試將源文件編譯成目標文件獨立:
g++ -c foo1.cc
g++ -c foo2.cc
g++ -o foo1.o foo2.o
GCC編譯器抱怨有在foo2.cc
到功能未定義的引用。這些功能應在foo1.cc
中定義;但是,鏈接器不承認這一點。
我想知道是否有辦法用GCC編譯器解決這個問題。
歡迎來到SO!一定要接受最有幫助的答案。 – jncraton
你應該接受一個答案。 – Walter