undefined reference to Auto::Anschauen()



  • Es ist zum verzweifeln. Ich habe versucht eine Klasse zu modularisieren.

    Ich benutze Def C++. Ich habe per Hand 3 Dateien erstellt und sie in den selben Ordner abgelegt. Nach dem Versuch des Kompilierens der Hauptdatei (Autoanzeige.cpp) erscheint folgende Fehlermeldung:

    Autoanzeige.cpp:(.text+0x5d): undefined reference to `Auto::Anschauen()'

    Hier die drei Dateien:

    Autoanzeige.cpp:

    #include <iostream>
    #include "Auto.hpp"
    
    using namespace std;
    
    int main()
    {
    	Auto Volkswagen;
    
    	Volkswagen.Geschwindigkeit = 130;
    	Volkswagen.Tankgroesse = 50;
    
    	Volkswagen.Anschauen();
    
    	cin.get();
    }
    

    Auto.hpp:

    class Auto
    {
    public:
    	int Geschwindigkeit;
    	int Tankgroesse;
    
        void Anschauen();
    };
    

    Auto.cpp

    #include <iostream>
    #include "Auto.hpp"
    
    using namespace std;
    
    void Auto::Anschauen()
    {
    	cout << "Geschwindigkeit : " << Geschwindigkeit << endl;
    	cout << "Tankgroesse     : " << endl << endl;
    }
    

    Wo liegt der Fehler?
    Ich danke herzlichst für konstruktive Antworten.



  • Dexter1997 schrieb:

    Nach dem Versuch des Kompilierens der Hauptdatei (Autoanzeige.cpp) erscheint folgende Fehlermeldung

    Du musst auch nicht nur die Hauptdatei sondern alle *.cpp Dateien compilieren. Gerade die Auto.cpp mit dem Code für Auto::Anschauen() scheint nicht mit compiliert worden zu sein. Da ich kein Dev C++ benutze kann ich dir aber nicht sagen wie das genau geht. Sind alle *.cpp Dateien in dem gleichen Projekt?



  • das ist ein Fehler des Linkers (der Linker fügt alle, bereits compilierten Module zu einem Programm zusammen).

    Da du eine Entwicklungsumgebung (Dev C++) verwendest, nehme ich an, dass du vergessen hast, die Auto.cpp zum Projekt hinzuzufügen. Dann nämlich wird auch die Auto.cpp compiliert und somit ist beim Linken auch die Funktion Auto::Anschauen bekannt.



  • übrigens ist meines Wissens die Entwicklung zu Dev C++ eingeschlafen (man möge mich korrigieren), ich empfehle dir Codeblocks als C++ Entwicklungsumgebung.



  • dfsfsdfgdfg schrieb:

    übrigens ist meines Wissens die Entwicklung zu Dev C++ eingeschlafen (man möge mich korrigieren)

    Wird aber hier als Fork fortgesetzt: http://orwelldevcpp.blogspot.de/



  • Das riecht also nach einem Fehler, der durch falsches Kompilieren verursacht wurde.
    Sind logische, syntaktische oder Fehler anderweitiger Art in einer der Skriptdateien zu finden, die diesen Fehler verursachen könnten? Dann könnte ich diesbezogenes schon mal ausschließen, wen dem nicht so ist.



  • http://ideone.com/sWOo6k

    Funktioniert einwandfrei. Das Problem liegt daran welche Dateien (nicht) kompiliert und anschließend gelinkt werden.



  • Gut. Dann wäre die Frage beantwortet. Vielen Dank!



  • Dexter1997 schrieb:

    Das riecht also nach einem Fehler, der durch falsches Kompilieren verursacht wurde.
    Sind logische, syntaktische oder Fehler anderweitiger Art in einer der Skriptdateien zu finden, die diesen Fehler verursachen könnten? Dann könnte ich diesbezogenes schon mal ausschließen, wen dem nicht so ist.

    nur der Vollständigkeit halber - bei compilierten Sprachen (C, C++, Java, Pascal, ...) nennt man die Dateien Quelldateien oder Sourcefiles. Skriptdateien nennt man es bei interpretierten Sprachen (Python, Javascript, PHP, ...).



  • und vielleicht noch ganz interessant um zu sehen, was da bei dir schiefgegangen ist:

    http://www.thegeekstuff.com/2011/10/c-program-to-an-executable/

    Da wird der Weg von der Quelldatei bis hin zum ausführbaren Programm erklärt (also Präprozessor, Compiler, Assembler, Linker).


Anmelden zum Antworten