为什么我的.cpp文件没有被处理?

时间:2010-07-20 06:17:29

标签: c++ makefile compilation undefined-reference

我正在尝试编译(制作)一个游戏源,似乎我的gRace.cpp文件被排除在外或因为它一直为我所有的gRace类方法返回未定义的引用错误。

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 个答案:

答案 0 :(得分:2)

不包含头文件会导致未定义的函数编译器错误。这些是链接器错误,这意味着实际的源文件没有与其他文件链接(也就是说,它与您是否在正确的位置包含gRace.h无关)。检查构建脚本以确保正确链接gRace.cpp

答案 1 :(得分:1)

如果是一个automake项目,则在Makefile.am的_SOURCES部分中缺少gRace.cpp。

答案 2 :(得分:0)

这似乎是链接错误,而不是编译错误。最有可能的是,您缺少一些应该链接的外部库。