Process terminated with status 1 (0 minutes, 2 seconds) 0 errors, 0 warnings
-
Hallo,
ich schreibe gerade mein erstes Programm mit Klassen in C++ und werde aus der im Titel genannten Fehlermeldung nicht schlau. Das Programm besteht aus einer Hauptdatei, die Header mit diesen "#ifndef ..." Sicherheitsabfragen includiert hat. Eine dieser Dateien definiert eine Funktion aus einer einzelnen Quelldatei, die aber momentan noch gar nicht im Programm verwendet wird, die aber schon getestet ist und korrekt funktioniert, also auch keinen Status 1 hervorruft. Die anderen Header-Dateien laden drei Klassen, eine Basisklasse und zwei Unterklassen, jede mit eigenem Header mit der oben genannten Sicherheitsabfrage, deren Namen mir gerade nicht einfällt. Tun, tut das Programm momentan noch gar nichts. Wo kann also wahrscheinlich der Fehler liegen? Ich will euch jetzt nicht gleich alle Quelltexte an den Kopf werfen.Ich hoffe jemand weiß Rat.

-
(hier stand davor mist - hab gerad ma gegoogelt:)
ich dachte, die meldung wäre anders gemeint - hast ja nicht verraten, dass CodeBlocks den produziert und damit meint, dass irgendetwas schief gelaufen ist...
wie wärs mit haltepunkten um zu sehen, wo genau der Fehler auftritt?
das hilft schon mal nen ganzes stück, wenn man weiß, wo man suchen muss ^^zB wenn das programm, das du kompilieren willst gerade ausgeführt wird
und das merkt er erst nach 2 sekunden laufzeit? oder ist das die compilezeit? wohl eher nicht ^^
vll stehen irgendwo in der codeblocks-hilfe oder so die errorcodes aufgeschlüsselt?bb
-
Der Fehler könnte so ziemlich überall liegen. zB wenn das programm, das du kompilieren willst gerade ausgeführt wird
-
Das Programm wird gar nicht ausgeführt. Der Fehler tritt beim kompilieren auf. Ich schreib hier jetzt einfach mal alle Dateien des Miniprojekts hin:
Die Hauptdatei "Initialisieren.cpp":
#ifndef _STDLIB_ #define _STBLIB_ #include <stdlib.h> #endif #ifndef _SDL_ #define _SDL_ #include <SDL.h> #endif #ifndef _TIME_ #define _TIME_ #include <sys/time.h> #endif #ifndef _FSTREAM_ #define _FSTREAM_ #include <fstream> #endif #include "Funktionen.h" #include "Objekte.h" #include "Spieler.h" #include "Ball.h" using namespace std; int main(int nNumerofArgs, char* pszArgs[]) { //Zeitvariablen deklarieren timeval& LetzteZeit = *new timeval; LetzteZeit.tv_sec = 0; LetzteZeit.tv_usec = 0; timeval& AktuelleZeit = *new timeval; AktuelleZeit.tv_sec = 0; AktuelleZeit.tv_usec = 0; //Einstellungen laden //Programm beenden delete &LetzteZeit; delete &AktuelleZeit; return 0; }Die Basisklasse "Objekte.h":
#ifndef _OBJEKTE_H_ #define _OBJEKTE_H_ class Objekte { public: virtual void Darstellen() = 0; virtual void Reset() = 0; virtual void PositionBerechnen() = 0; protected: double Y; double SpeedY; double X; double SpeedX; }; #endifDie Ballklasse "Ball.h":
#ifndef _BALL_H_ #define _BALL_H_ #include "Objekte.h" #ifndef _SDL_ #define _SDL_ #include <SDL.h> #endif class Ball : public Objekte { public: virtual void Darstellen(SDL_Rect& ball, SDL_Surface *screen) { SDL_FillRect(screen, &ball, SDL_MapRGB(screen->format, 200, 200, 200)); } virtual void Reset() { } virtual void PositionBerechnen() { } }; #endifDie Spielerklasse "Spieler.h":
#ifndef _SPIELER_H_ #define _SPIELER_H_ #include "Objekte.h" #ifndef _SDL_ #define _SDL_ #include <SDL.h> #endif class Spieler : public Objekte { public: virtual void Darstellen() { } virtual void Reset() { } virtual void PositionBerechnen() { } void PunkteErhoehen() { } protected: int Punkte; }; #endifUnd die einzige Funktion im Programm, "VergangeneZeit.cpp":
#ifndef _TIME_ #define _TIME_ #include <sys/time.h> #endif #include "Funktionen.h" double dVergangeneZeit(timeval& LetzteZeit, timeval& AktuelleZeit) { //Aktuelle Zeit auslesen gettimeofday(&AktuelleZeit, 0); //Vergangene Sekunden int Sekunden = AktuelleZeit.tv_sec - LetzteZeit.tv_sec; //Vergangene Millisekunden int Millisekunden = AktuelleZeit.tv_usec - LetzteZeit.tv_usec; //Eine Millionen Millisekunden sind gleich eine Sekunde! //Vorangehende Nullen werden nicht zurückgegeben! //Vorangehende Nullen hinzufügen, indem in Bruch durch 1000000 teile //Wenn die Zeitmessung zum ersten Mal aufgerufen wurde, ist die Zeit 0 double dVergangeneZeit = 0.0; if (LetzteZeit.tv_sec == 0) { dVergangeneZeit = 0.0; } else { //In EInzelschritten rechnen, damit beim Teilen nicht auf die //Millisekunden-Int gerundet wird dVergangeneZeit = Millisekunden; dVergangeneZeit /= 1000000; dVergangeneZeit += Sekunden; } //Aktuelle Zeit wird zu nächster Letzter Zeit LetzteZeit.tv_sec = AktuelleZeit.tv_sec; LetzteZeit.tv_usec = AktuelleZeit.tv_usec; return dVergangeneZeit; }Und die letzte Datei, "Funktionen.h":
#ifndef _FUNKTIONEN_H_ #define _FUNKTIONEN_H_ double dVergangeneZeit(timeval& LetzteZeit, timeval& AktuelleZeit); #endifDas ist alles, was momentan im Projekt ist. Da müsste irgendwo der Hund begraben liegen, aber ich habe keine Ahnung wo.
-
Die IDE möchte Dir mit dieser Meldung mitteilen, dass er nicht compilieren konnte. Sprich, das compilieren ist fehlgeschlagen.
Die zusätzliche Meldung "0 errors, 0 warnings" deutet darauf hin, dass der Compiler garnicht installiert ist oder nicht gefunden wird.
-
Das kann nicht sein, eine halbe Stunde vorher, ohne die Klassen und mit noch etwas weniger Inhalt ging's noch fehlerfrei kompilieren.
Hab aber gerade was anderes festgestellt, die Ausgabe während dem Kompilieren enthält etwas interessantes:
Compiling: Initialisieren.cpp Precompiling header: Objekte.h Precompiling header: Spieler.h Compiling: VergangeneZeit.cpp Precompiling header: Ball.h Linking console executable: bin\Debug\NewPong.exe Objekte.h.gch: file not recognized: File format not recognized collect2: ld returned 1 exit status Process terminated with status 1 (0 minutes, 2 seconds) 0 errors, 0 warningsUnd zwar in Zeile 7. Im Projektordner erstellt der Kompiler für die drei Klassen jeweils eine Klassenname.h.gch-Datei. Wieso verwendet er nur die Basisklasse nicht, aber scheinbar die beiden Unterklassen? Ist das vielleicht ein Hinweis auf den Fehler oder werden abstrakte Klassen immer so aussortiert?
-
Ich hab jetzt endlich die Lösung gefunden:
http://forums.codeblocks.org/index.php?topic=6108.msg46767
Die Header-Dateien sollen niemals gelinkt werden und am besten auch nicht kompiliert. Ohne Linken der Header-Dateien funktioniert das kompilieren. Ich verstehe nur nicht, warum.
-
ja, das ist mir also auch wirklich ein Rätsel, warum die Header Files nicht gelinkt werden sollen

-
Sorry, aber für mich schon
.