2014-07-02 9 views
5

Si verificano problemi con un progetto scritto in Code Blocks.Riferimento non definito a 'main' dopo l'aggiunta di una classe al progetto

Ho creato una nuova applicazione per la console e ne sono state costruite. Ma quando aggiungo una nuova classe C :: B mi genera un errore:

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

Non so che cosa è sbagliato.

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

Quanti file di codice avete? Come è stata aggiunta la classe (è stata utilizzata la finestra di dialogo Codeblocks?) – deviantfan

+1

Mostra il codice, le opzioni di compilazione e le opzioni di collegamento. – jready

+0

Ovviamente non hai una funzione 'main' definita. – 101010

risposta

4

sto usando 13.12 a 64 bit Ub fino al 14.04. Ottengo lo stesso problema e sembra essere la finestra di dialogo di aggiunta di classe che è la colpa. Utilizzarlo per creare i file di classe ma Non aggiungere al progetto. Fare clic con il pulsante destro del mouse sul titolo del progetto nella scheda "Progetti" (riquadro sinistro nella finestra) e utilizzare "Aggiungi file" dal menu di scelta rapida. Dovresti compilare ok allora.

Prima di aggiungere la nuova classe era una tipica linea di compilazione:

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 

Dopo aggiunta di una categoria completamente vuoto 'MyFileTree' riga di compilazione per la nuova classe diventa:

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 

Operazione mentre per individuare la differenza non è vero?

Che cos'è quel randagio? Sono appena prima dell'interruttore -c?

Non viene visualizzato nella finestra di dialogo delle opzioni di creazione o in qualsiasi altro punto in cui sono riuscito a trovarlo, quindi se lo rimuove, come lo rimuovi? Potrebbe essere qualcosa a che fare con lo script wxconfig che sto usando per impostare le opzioni - ma nulla è cambiato nella sua invocazione per quanto posso vedere. E 'invariato:

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

Come ho detto, Non Aggiungi al progetto tramite la finestra di creazione della classe farlo manualmente utilizzando la finestra di gestione.

+0

Non sono sicuro che Google indicizzi i commenti, ma ho ricevuto questo errore seguendo le Esercitazioni di programmazione C++ di Bucky - 15 - Inserimento di classi in file separati su Youtube. Sto anche eseguendo Ubuntu (14.04) e blocchi di codice (13.12). Questa risposta ha corretto il mio errore. – DanGoodrick

+0

Sono un totale noob, ma questo mi ha fatto inciampare quando ho seguito questa risposta. Quando si definisce la classe, esiste una sezione Politica file con "Aggiungi percorsi al progetto". Controllare o deselezionare questa casella non influisce sul risultato della risposta fornita dall'accodatore. Viene visualizzata la finestra di dialogo Aggiungi al progetto dopo aver fatto clic su Crea nella finestra di dialogo Crea nuova classe. – DanGoodrick

1

Aveva lo stesso problema oggi.

risolto utilizzando progetti-> Crea Options-> Directory di ricerca

quindi impostare le opzioni del compilatore e linker a "utilizzare le opzioni di progetto solo"

Problemi correlati