Undefinierter Verweis



  • Hallo zusammen

    Ich bin neu bei C++ und daher entschuldigt, wenn ich vielleicht eine dumme frage stelle (habe dazu aber bis jetzt keine Antwort gefunden) 🙂

    in meinem Ordner sind 3 Dateien... "a.cpp", "b.h" und "b.cpp"

    Nun habe ich das Problem, das ich zwar die Methoden aus "b.cpp" ...

    #include <iostream>
    void ausgabe(){
          std::cout << "test" << std:endl;
    }
    

    ... in "b.h" benenne ...

    void ausgabe();
    

    ... und in a.cpp importiere

    #include <iostream>
    #include "b.h"
    
    int main{
          ausgabe();
          return 0;
    }
    

    Ich kann mir vorstellen das ihr das jetzt nicht wirklich schön findet... ist es auch nicht ... soll aber nur zu Test zwecken sein ... also Augen zu und durch xD

    beim Kompilieren bekomme ich hier den Error:

    undefinierter Verweis auf »ausgabe()«
    

    Woran liegt das? die .h und .cpp haben doch den selben Namen und sind in der selben Datei ...

    Wenn ich den ganzen Code in die .h donnere, dann geht es ... aber das ist unschön und es sollte ja auch anders xD

    Ich bedanke mich schon ein mal im vor hinaus für eure Antworten 🙂

    Grüß euch
    EvD



  • Du musst a.cpp und b.cpp übersetzen und zu einem Programm binden. Die Namen sind egal. Wie das zu bewerkstelligen ist hängt von deinem Compiler und gegebenenfalls deiner IDE ab. Für g++:

    g++ a.cpp b.cpp -o meinprogramm
    


  • Dann stellt sich da für mich eine Weitere frage ... (wenn hier Leute aus dem Ubuntuusersforum sind, sorry für teilweise dopplung)

    und Zwar benutze ich VSCode unter Ubuntu, um C++ zu Programmieren, schaue mir aber ein Tutorial an, wo mit VSExpress gearbeitet wird.
    Der muss einfach nur auf Kompile && Run Klicken und es wird kompiliert und ausgeführt, und das auch gleich mit allen hinzugefügten Dateien (bei mir wehre das b.cpp) ...
    Ich muss bei VSCode immer die tasks.json und launch.json anpassen.
    Gibt es da eine einfachere Möglichkeit, die ich übersehe, oder bekommt das VSCode nicht anders hin? (mal vom Terminal abgesehen xD)

    Freue mich über eure Antwort 🙂



  • Du benötigst ein Projekt "project.json")!

    Update: Habe gerade in C/C++ for VS Code (Preview) gelesen, daß dies mit C++ doch noch nicht geht (und man wohl doch direkt die "tasks.json" und "launch.json" editieren muß).

    Die letzten Änderungen bei Update v1.20 kannst du dir ja auch mal durchlesen.

    PS: Evtl. eine andere, besser für C++ geeignete, IDE nehmen: 18 Best IDEs for C/C++ Programming or Source Code Editors on Linux (außer du verwendest VS Code sowieso auch für andere Sprachen bzw. Plattformen)



  • Ich würde eher raten, dein Projekt z.B. mithilfe eines Buildtools zu übersetzen. Es bietet sich z.B. cmake an. Du kannst cmake auch in VS Code integrieren (musst nur das entsprechende Plugin (von vector-of-bool) installieren) und hast dann unten in der Statusleiste einen build-Button. Ich hoffe, zumindest IntelliSense hast du schon installiert?

    VS Code hat den Vorteil, dass es so ultraschnell startet und schön leichtgewichtig ist.



  • wob schrieb:

    Ich hoffe, zumindest IntelliSense hast du schon installiert?

    Ich sage es mal so... ich habe Python unter Eclips gemacht... das wurde mir aber auf Dauer zu dumm, und habe dann ein wenig Assembler, C, Java, Python in nano auf meiner Terminal gemacht xD

    Stelle dir vor ich bin ein unbeschriebenes Blatt in dem Punkt xD
    ich habe mir bis jetzt nur die C/C++ Erweiterung installiert xD

    Also in dem Punkt hau raus, wenn ich noch was Braucht 🙂

    Ich werde mir mal die Tage nach der Klausur cmake anschauen 🙂 danke im vor hinaus für den Tipp 🙂

    Und werde mir dann in dem Zug auch gleich mal die Update news anschauen ... ich habe gesehen das ich immer noch 1.19 hatte, jetzt geupdatet 🙂


Log in to reply