2014-07-02 17 views
5

Mam problemy z projektem napisanym w Code Blocks.Niezdefiniowane odniesienie do "głównego" po dodaniu klasy do projektu

Zrobiłem nową aplikację konsolową i ją tworzy. Ale kiedy dodać nową klasę C :: B wyrzuca mi błąd:

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

nie wiem co jest nie tak.

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

Ile kod pliki masz? W jaki sposób dodałeś klasę (niektóre okno dialogowe bloku kodu były używane?) – deviantfan

+1

Pokaż kod, opcje kompilacji i opcje linków. – jready

+0

Oczywiście nie masz zdefiniowanej funkcji "main". – 101010

Odpowiedz

4

Używam 13.12 na 64 bitowym Ub do 14.04. Otrzymuję ten sam problem i wydaje się, że jest to okno dialogowe dodawania klas, które jest winne. Służy do tworzenia plików klas, ale Nie dodawaj go do projektu przez. Kliknij prawym przyciskiem myszy tytuł projektu w zakładce "Projekty" (lewe okienko w oknie) i użyj "Dodaj pliki" z menu kontekstowego. Powinny się skompilować ok, a następnie.

Przed dodaniem nowej klasy był to typowy linię kompilacji:

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 

po dodaniu zupełnie pustą klasę „MyFileTree” linię kompilacji dla nowej klasy staje:

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 

trwa tylko ale czy dostrzec różnicę, prawda?

Co to jest bezpańskie - ja tuż przed przełącznikiem -c?

Nie pojawia się w oknie dialogowym opcji kompilacji ani nigdzie indziej, co udało mi się znaleźć, więc jeśli się pojawi, jak go usunąć? Może to mieć coś wspólnego ze skryptem wxconfig, którego używam do ustawiania opcji - ale nic nie zmieniło się w jego wywołaniu, o ile widzę. To niezmienione od:

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

Jak powiedziałem, nie należy dodawać do projektu za pomocą okna dialogowego tworzenia klasy zrobić to ręcznie za pomocą okna zarządzania.

+0

Nie jestem pewien, czy Google indeksuje komentarze, ale mam ten błąd po Bucky C++ Programming Tutorials - 15 - Umieszczanie klas w osobnych plikach na Youtube. Używam również Ubuntu (14.04) i bloków kodu (13.12). Ta odpowiedź naprawiła mój błąd. – DanGoodrick

+0

Jestem totalnym noobem, ale potknęło mnie to, gdy podążałem za tą odpowiedzią. Po zdefiniowaniu klasy istnieje sekcja Zasady plików z "Dodaj ścieżki do projektu". Zaznaczenie lub odznaczenie tego pola nie ma wpływu na wynik odpowiedzi udzielonej przez accodera. Okno dialogowe Dodaj do projektu pojawia się po kliknięciu Utwórz w oknie dialogowym Utwórz nową klasę. – DanGoodrick

1

Miał ten sam problem dzisiaj.

rozwiązać go zbudować z wykorzystaniem Projects-> Opcje-> Szukaj Katalogi

następnie ustawić opcje kompilatora i linkera do „Opcje projektu zastosowanie tylko”

Powiązane problemy