2014-07-02 9 views
5

Ich habe Probleme mit einem Projekt in Code Blocks geschrieben.Undefinierter Verweis auf "Haupt" nach dem Hinzufügen einer Klasse zum Projekt

Ich habe neue Konsolenanwendung gemacht und es baut. Aber wenn ich eine neue Klasse C hinzufügen :: B wirft mir einen Fehler:

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o||In function `_start': 
(.text+0x20)||undefined reference to `main' 

Ich weiß nicht, was falsch ist.

main.cpp

#include <iostream> 
#include "display.h" 

int main() 
{ 
    Display newDisplay; 
    std::cout << "Hello world!" << std::endl; 
    return 0; 
} 

display.cpp

#include "display.h" 
#include <iostream> 

Display::Display() 
{ 
    std::cout << "Constructor" << std::endl; 
} 

Display::~Display() 
{ 
    std::cout << "Destructor" << std::endl; 
} 

display.h

#ifndef DISPLAY_H 
#define DISPLAY_H 


class Display 
{ 
    public: 
     Display(); 
     virtual ~Display(); 

    protected: 
    private: 
}; 

#endif // DISPLAY_H 
+0

Wie viele Code-Dateien haben Sie? Wie haben Sie die Klasse hinzugefügt (einige Codeblocks-Dialog verwendet?) – deviantfan

+1

Zeigen Sie Ihren Code, Übersetzungsoptionen und Link-Optionen. – jready

+0

Offensichtlich haben Sie keine 'Hauptfunktion definiert. – 101010

Antwort

4

Ich 13,12 auf 64-Bit-Ub mit bis 14.04. Ich bekomme das gleiche Problem und es scheint der Klassenhinzufügungsdialog zu sein, der dafür verantwortlich ist. Verwenden Sie es, um die Klassendateien zu erstellen, aber Do not fügen Sie es dem Projekt hinzu. Klicken Sie mit der rechten Maustaste auf den Projekttitel auf der Registerkarte "Projekte" (linker Fensterbereich im Fenster) und verwenden Sie den Befehl "Dateien hinzufügen" aus dem Kontextmenü. Sollte kompilieren dann ok.

Bevor die neue Klasse Zugabe war eine typische Kompilierung Zeile:

g++ -Wall -g -I/media/Data/programming/source/wxWidgets-3.0.2/build/ubuntu14.04/debug/lib/wx/include/gtk2-unicode-3.0-d -I/media/Data/programming/source/wxWidgets-3.0.2/include -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -c /media/Data/programming/projects/wx/Xperiments/XperimentsApp.cpp -o ./bin/Ubuntu14/debug/XperimentsApp.o 

Nach einer völlig leeren Klasse Hinzufügen ‚MyFileTree‘ die Kompilierung Linie für die neue Klasse wird:

g++ -Wall -g -I/media/Data/programming/source/wxWidgets-3.0.2/build/ubuntu14.04/debug/lib/wx/include/gtk2-unicode-3.0-d -I/media/Data/programming/source/wxWidgets-3.0.2/include -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -I -c /media/Data/programming/projects/wx/Xperiments/MyFileTree.cpp -o ./bin/Ubuntu14/debug/MyFileTree.o 

ein Takes während, um den Unterschied zu erkennen, nicht wahr?

Was ist das stray -I kurz vor dem -c wechseln?

Es wird nicht im Dialogfeld "Buildoptionen" angezeigt oder wo auch immer ich es gefunden habe, wenn es dort ankommt, wie entferne ich es? Es kann etwas mit dem wxconfig-Skript zu tun haben, das ich verwende, um die Optionen zu setzen - aber soweit ich sehen kann, hat sich nichts in seinem Aufruf geändert. Es ist unverändert:

/media/Data/programming/source/wxWidgets-3.0.2/build/ubuntu14.04/debug/wx-config --cflags --debug=yes 

Wie gesagt, Sie nicht fügen über die Klasse-Erstellungs-Dialog zu projizieren tun sie das Management Fenster manuell verwenden.

+0

Ich bin mir nicht sicher, ob Google Kommentare indiziert, aber ich habe diesen Fehler nach Buckys C++ - Programmierkursen - 15 - Einordnen von Klassen in separate Dateien auf Youtube. Ich benutze auch Ubuntu (14.04) und Codeblöcke (13.12). Diese Antwort hat meinen Fehler behoben. – DanGoodrick

+0

Ich bin ein totaler Noob, aber das stolperte mich, als ich dieser Antwort folgte. Wenn Sie die Klasse definieren, gibt es einen Abschnitt "Dateirichtlinie" mit einem "Hinzufügen von Pfaden zum Projekt". Das Aktivieren oder Deaktivieren dieses Kontrollkästchens wirkt sich nicht auf das Ergebnis der Antwort aus, die von accoder bereitgestellt wird. Das Dialogfeld "Zum Projekt hinzufügen" wird angezeigt, nachdem Sie im Dialogfeld "Neue Klasse erstellen" auf "Erstellen" geklickt haben. – DanGoodrick

1

Hatte das gleiche Problem heute.

Gelöst es mit Projekte-> Build Optionen-> Suchverzeichnisse

legen Sie dann die Compiler und Linker-Optionen auf „Verwendung Projektoptionen nur“