2012-04-04 8 views
0

Ich versuche, ein Programm in C++ zu schreiben, das Conways Game of Life ausführt. Ich denke, ich habe alles, was ich brauche, aber ich habe Probleme mit dem Kompilieren.Xcode-Fehler: Befehl/Entwickler/usr/bin/clang ++ fehlgeschlagen mit Exit-Code 1 wegen doppeltem Symbol

Das Programm von vier Dateien zusammen: gameoflife.h, eine Header-Datei, die meine globalen Konstanten und Funktionsdeklarationen enthält, gameoflife.cpp, die die Funktionen definiert, main.cpp, die die Funktionen verwendet, und seeds.cpp, das eine Liste von vordefinierten Samen enthält benutzt werden.

Wenn ich die Anwendung zu kompilieren, scheine ich einen Kampf der doppelten Symbole zwischen main.cpp und gameoflife.cpp über ein Array currGen genannt zu haben, die in gameoflife.h deklariert wird.

Sowohl main.cpp als auch gameoflife.cpp enthalten gameoflife.h, was natürlich notwendig ist, damit sie Zugriff auf die globalen Konstanten und Funktionsdeklarationen haben.

Die genauen Fehler I erhalten ist folgende:

duplicate symbol _currGen in /(same_path)/ConwaysGameOfLife.build/Objects-normal/ 
x86_64/gameoflife.o and 
/(same_path)/ConwaysGameOfLife.build/Objects-normal/x86_64/main.o 
for architecture x86_64 
Command /Developer/usr/bin/clang++ failed with exit code 1 

Ich habe auf Stack-Überlauf sehe mich haben, aber nichts gefunden, was mein Problem paßt. Jede Hilfe würde sehr geschätzt werden!

Antwort

0

Sie definieren wahrscheinlich die Variable currGen in Ihrer Header-Datei, nicht nur deklarieren.

Es muss genau eine Definition in einer .cpp-Datei geben. Die .h-Datei sollte nur deklarieren, mit extern.

This answer goes into much more detail.

Verwandte Themen