2010-07-20 12 views
2

Je suis en train de compiler (créer) une source de jeu et il semble que mon fichier gRace.cpp soit exclu ou quelque chose parce qu'il continue de renvoyer des erreurs de référence indéfinies pour toutes mes méthodes de classe gRace.Pourquoi mon fichier .cpp n'est-il pas traité?

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 

Je suis y compris le fichier gRace.h dans les deux fichiers via:

#include "gRace.h" 

Toutes les idées sur ce qui pourrait être à l'origine à ne pas traiter?

+3

Est-ce que 'gRace.cpp' est inclus dans le fichier makefile? – casablanca

Répondre

2

Ne pas inclure le fichier d'en-tête entraînerait des erreurs de compilateur de fonction non définies. Ce sont des erreurs d'éditeur de liens, ce qui signifie que le fichier source réel n'est pas lié aux autres fichiers (c'est-à-dire qu'il n'a rien à voir avec le fait que vous ayez ou non inclus gRace.h aux bons endroits). Vérifiez votre script de construction pour vous assurer que gRace.cpp est correctement lié

+0

Merci d'avoir signalé cela. J'ai complètement oublié d'ajouter le lien pour gRace! Je suppose que je m'attendais juste à ce qu'il ajoute magiquement cela ... – animuson

0

Il s'agit d'une erreur de liaison et non d'une erreur de compilation. Très probablement, il vous manque des bibliothèques externes avec lesquelles vous devriez vous lier.

1

S'il s'agit d'un projet automake, il vous manque gRace.cpp dans votre section _SOURCES dans Makefile.am.

+0

+1 pour avoir suggéré le Makefile.am! – animuson