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;
    };
    
    #endif
    

    Die 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()
            {
    
            }
    };
    
    #endif
    

    Die 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;
    };
    
    #endif
    

    Und 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);
    
    #endif
    

    Das 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 warnings
    

    Und 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 😕 .


Anmelden zum Antworten