“undefinierter Verweis auf” mit “g++”, um ein C++-Programm zu kompilieren

Lesezeit: 3 Minuten

Benutzer-Avatar
Zeveso

Ich bekomme die Fehler anscheinend nicht weg. Die Fehler sind unten. Ich habe in der Google-Suche nachgesehen und kann es immer noch nicht herausfinden. Es ist nicht so, als wäre ich neu in C++, aber ich habe schon eine Weile nicht mehr damit herumgespielt.

Das Seltsame ist, dass es mit g ++ unter Windows funktioniert hat …

Fehler bei der Verwendung von:

g++ main.cpp

Ausgabe:

/tmp/ccJL2ZHE.o: In Funktion main': \ main.cpp:(.text+0x11): undefined reference to Hilfe Hilfe()’
main.cpp:(.text+0x1d): undefinierter Verweis auf Help::sayName()' \ main.cpp:(.text+0x2e): undefined reference to Hilfe::~Hilfe()’
main.cpp:(.text+0x46): undefinierter Verweis auf `Help::~Help()’
collect2: ld hat 1 Exit-Status zurückgegeben

Datei main.cpp

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

using namespace std;

int main () {

    Help h;
    h.sayName();

    // ***

    // ***

    // ***
    return 0;

}

Datei Hilfe.h

#ifndef HELP_H
#define HELP_H

class Help {
    public:
        Help();
        ~Help();
        void sayName();
    protected:
    private:
};

#endif // HELP_H

Datei Hilfe.cpp

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

using namespace std;

Help::Help() { // Constructor
}

Help::~Help() { // Destructor
}

void Help::sayName() {
    cout << "            ***************" << endl;
    cout << "   ************************************" << endl;
    cout << "              ************" << endl;
    cout << "         *********************" << endl;
}

  • Betreff “Das Seltsame ist, dass es mit g++ unter Windows funktioniert hat…”: Auf welcher Plattform wurde das ausprobiert? Hat es in der Vergangenheit unter Windows funktioniert, aber jetzt funktioniert es nicht unter Windows? Oder wurde dies auf etwas anderem als Windows versucht, wie Linux? Der Shell-Prompt schlägt vor GitBash oder Cygwin unter Windows oder vielleicht Linux.

    – Peter Mortensen

    Vor 2 Tagen


  • OK, das OP hat das Gebäude verlassen: “Zuletzt gesehen vor mehr als 8 Jahren”. Wir werden es vielleicht nie erfahren. Eine andere Frage vor 4 Monaten deutet darauf hin, dass die Plattform der Wahl Windows sein könnte.

    – Peter Mortensen

    Vor 2 Tagen


Benutzer-Avatar
John

Benutzen

g++ main.cpp Help.cpp

Sie müssen dem Compiler alle Dateien mitteilen, die er kompilieren soll, nicht nur die erste.

Benutzer-Avatar
Jakob M.

Sie sollten help.o zu Ihrer g++-Zeile hinzufügen:

g++ -c help.cpp -o help.o
g++ help.o main.cpp

Indem Sie es auf zwei Zeilen aufteilen, können Sie (bei größeren Projekten) Kompilierzeit sparen, da Sie kompilieren können help.cpp erst wenn es geändert wurde. make und Makefile gut eingesetzt erspart Ihnen viel Kopfzerbrechen:

#Makefile
all: main

main: help main.cpp
    g++ -o main help.o main.cpp

help: help.cpp
    g++ -c -o help.o help.cpp

Benutzer-Avatar
Sankalp Arora

Ich hatte das gleiche Problem mit meinem Linux Lubuntu Distribution und es verursachte das Problem für meinen Konstruktor und Destruktor. Es erkannte sie nicht.

Eigentlich geht das ab wenn man nur kompilieren Sie alle drei Dateien zusammen. Nachdem Sie alle Ihre Dateien gespeichert haben, tun Sie einfach Folgendes:

g++ main.cpp Help.h Help.cpp
./a.out

./a.out ist die ausführbare Datei für Linux. Tut mir leid, aber ich kenne mich mit Windows nicht aus. Und Ihr Programm würde reibungslos laufen.

1013130cookie-check“undefinierter Verweis auf” mit “g++”, um ein C++-Programm zu kompilieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy