2010-07-20 41 views
2

我試圖編譯(make)一個遊戲源代碼,看起來我的gRace.cpp文件被排除在外或者是因爲它一直爲我所有的gRace類方法返回未定義的引用錯誤。爲什麼我的.cpp文件沒有被處理?

libtron.a(libtron_a-gGame.o): In function `gGame::StateUpdate()': 
gGame.cpp:(.text+0x99e9): undefined reference to `gRace::Reset()' 
libtron.a(libtron_a-gGame.o): In function `gGame::Analysis(float)': 
gGame.cpp:(.text+0xad48): undefined reference to `gRace::Sync(int, int, int)' 
gGame.cpp:(.text+0xad4d): undefined reference to `gRace::Done()' 
gGame.cpp:(.text+0xad61): undefined reference to `gRace::Winner()' 
gGame.cpp:(.text+0xb786): undefined reference to `gRace::End()' 
libtron.a(libtron_a-gWinZone.o): In function `gWinZoneHack::OnEnter(gCycle*, float)': 
gWinZone.cpp:(.text+0x9206): undefined reference to `gRace::ZoneHit(ePlayerNetID*)' 
libtron.a(libtron_a-gWinZone.o): In function `gWinZoneHack::gWinZoneHack(eGrid*, eCoord const&, bool)': 
gWinZone.cpp:(.text+0xda96): undefined reference to `gRace::NewZone(gWinZoneHack*)' 
libtron.a(libtron_a-gWinZone.o): In function `gWinZoneHack::gWinZoneHack(eGrid*, eCoord const&, bool)': 
gWinZone.cpp:(.text+0xdcc6): undefined reference to `gRace::NewZone(gWinZoneHack*)' 
collect2: ld returned 1 exit status 

我包括這兩個文件通過gRace.h文件:

#include "gRace.h" 

任何想法什麼可能會導致它不會被處理?

+3

makefile中包含'gRace.cpp'嗎? – casablanca 2010-07-20 06:20:54

回答

2

不包括頭文件會導致未定義的函數編譯器錯誤。這些是鏈接器錯誤,這意味着實際的源文件沒有與其他文件鏈接(即,它與您是否將gRace.h包含在正確的位置無關)。檢查您的構建腳本,以確保gRace.cpp正在鏈接正確

+0

謝謝你指出。我完全忘了爲gRace添加鏈接!我想我只是希望它神奇地補充說... – animuson 2010-07-20 06:33:51

0

這個apprears是鏈接錯誤,而不是編譯錯誤。很可能,你錯過了一些你應該鏈接的外部庫。

1

如果它是一個automake項目,您在Makefile.am的_SOURCES部分中缺少gRace.cpp。

+0

+1建議Makefile.am! – animuson 2010-07-20 06:33:17

相關問題