2010-07-20 57 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

相关问题