[SOLVED] Codeblocks nicht richtig konfiguriert? ->undefined reference to ...



  • Hiho,

    ich wage mich gerade, seit einiger Zeit mal wieder, an C++.
    Ich benutze Codeblocks 10.05 als IDE.

    Ich habe folgende Klasse

    #include "spielleiter.h"
    
    Spielleiter::Spielleiter(){
    
    }
    
    void Spielleiter::warteAufSpieler(){
    
    }
    

    mit folgendem Header

    #ifndef SPIELLEITER_H
    #define SPIELLEITER_H
    
    class Spielleiter{
        private:
        public:
            Spielleiter();
            void warteAufSpieler();
            void mischen();
            void geben();
    
    };
    
    #endif //SPIELLEITER_H
    

    und so sieht meine main aus:

    #include "spielleiter.h"
    
    int main(){
    
        Spielleiter* sl=new Spielleiter();
    
        return 0;
    }
    

    Das is jetz nicht der vollständige Code, hab noch einige auskommentierte Zeilen herausgeschlöscht, damits etwas übersichtlicher wird.
    Auf jeden Fall bekomm ich folgende Fehlermeldung:

    undefined reference to 'Spielleiter::Spielleiter()'

    Da es nun schon n bisschen her is, dass ich mit C++ programmiert habe, wollt ich anfangs nich ausschließen, dass es ein dummer Leichtsinnsfehler (Buchstabendreher oder so) ist. Nach mehrmaligem Überprüfen hab ich aber nix in die Richtung gefunden. Nachdem ich dann ein bisschen gegoogelt hab, scheint mir das eine Einstellungssache von Codeblocks zu sein, genauer gesagt eine Linkereinstellung. Wenn ich mein Programm auf Kommandozeile linke und auch kompiliere gehts ohne Probleme.
    Also wo liegt der Fehler?



  • Spielleiter* leiter = new Spielleiter;
    


  • Firefighter schrieb:

    Spielleiter* leiter = new Spielleiter;
    

    Hm hat nicht funktioniert, exakt die gleiche Fehlermeldung.


  • Mod

    Du wirst wohl die Objektdatei nicht mitlinken, die aus dem Code mit den entsprechenden Definitionen erzeugt wird. Das ist eine Frage der Bedienung deiner IDE, mit dem Programm an sich ist alles in Ordnung (außer dass die Benutzung von new und der leere Konstruktor hier natürlich reichlich unsinnig sind).



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • wie gesagt, ich hab noch einige auskommentierte Zeilen ganz rausgelöscht. Im Konstruktor steht schon was drin.

    Wie genau linke ich denn (edit: mit Codeblocks) die erzeugten Objektdateien an die main, bzw. wie erstelle ich aus meinen *.cpp Dateien eine *.o Datei?

    edit2: okay, ich habe mir jetzt ein neues Projekt in Codeblocks angelegt und meine Dateien übertragen. Vorher hatte ich nur alle Dateien einzeln geöffnet und in keinem Codeblocks Projekt vereint. So funktioniert es auch!
    Jedoch bin ich so nicht ganz glücklich, da Codeblocks eine etwas seltsame Ordnerstruktur anlegt und ich dann um einen Header zu includen den absoluten Pfad angeben muss



  • Das mit dem Projekt erstellen ist bei vielen IDEs so und keine Spezialität von Code::Blocks.

    Wenn dir die vorgeschlagene Ordnerstruktur/Konfiguration nicht gefällt, ändere die. C::B bietet dir dabei sogar Unterstützung.

    Und mit deinem Header und den absoluten Pfad, keine Ahnung was du da machst? Da gibt es mehrere Möglichkeiten um da herum zu kommen, egal ob mit den Möglichkeiten von C::B oder ohne. Stichworte: Umgebung deines OS wo du entsprechende Pfade ergänzen kannst, oder in C::B,wenn du das bevorzugst. Kannst du aber auch über Skript oder Batchdateien bei Start von C::B mit regeln, wenn du die C::B Einstellungen nicht antasten willst. Bei Bedarf sollte man gar make-Files mit C::B nicht nur indirekt sondern auch direkt erstellen und starten können.

    Wenn all das nicht reicht, der Quelltext von C::B steht dir ja zur Weiterentwicklung zur Verfügung 😃

    Es gibt also Möglichkeiten genug. Arbeite dich da mal ein 😉



  • Danke für eure Antworten.
    Hab seit gestern mit Codeblocks Projekten gearbeitet und mich etwas dran gewöhnt. Jetzt fühlt sich die Sache nicht mehr so umständlich an.


Anmelden zum Antworten