Warum erhalte ich diese undefinierten Fehler, wenn ich ein C ++ - Programm in Terminal kompiliere?


1

Ich habe ein C ++ - Programm, das perfekt in Codeblöcken kompiliert und ausgeführt wird. Jedoch, wenn ich versuche, es vom Terminal mit zu kompilieren:

gcc -g main.cpp -o Main

Ich bekomme viele undefinierte Referenzen:

Und dies ist ein Screenshot des Programms, das in Codeblöcken ausgeführt wird:

Antworten:


1

Sie sollten mit kompilieren g++, gcckompiliert C-Programme. Um alle erforderlichen Pakete von zu installieren g++, müssen Sie sudo apt-get install build-essentialauf einem Terminal vorgehen und anschließend Ihr Programm kompilieren g++ -g main.cpp -o Main.


Ich habe es mit dem g ++ versucht und erhalte immer noch die gleichen exakten Fehler!
Mark J

0

Sie sollten g++für C ++ Programme immer verwenden!

Das ist, weil:

  • gcc ist GNU C Compiler

  • g++ ist der GNU C ++ Compiler

Sie sind also unterschiedliche Compiler und unterschiedliche Pakete. Die Hauptunterschiede:

  1. gccKompiliert: *.c/ *.cppfiles als C bzw. C ++.
  2. g++kompiliert: *.c/ *.cppfiles, aber alle werden als C ++ Dateien behandelt.
  3. Wenn Sie g++zum Verknüpfen der Objektdateien verwenden, wird automatisch eine Verknüpfung mit den Standard-C ++ - Bibliotheken hergestellt ( gccdies ist nicht der Fall).
  4. gcc Das Kompilieren von C-Dateien hat weniger vordefinierte Makros.
  5. gcccompiling *.cppund g++compiling *.c/ *.cppfiles haben ein paar zusätzliche Makros.

Quelle: Was ist der Unterschied zwischen g ++ und gcc?


Ich habe es mit dem g ++ versucht und erhalte immer noch die gleichen exakten Fehler!
Mark J

0

Ich habe das Problem herausgefunden. Ich habe die spezifische Lösung nicht gefunden, aber ich habe eine Lösung gefunden. Anscheinend werden die Klassen nicht verbunden. Also habe ich alle Klassen in die Hauptdatei eingefügt und es hat perfekt funktioniert!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.