Code::Blocks Fehler



  • Hallo,

    ich bin hinsichtlich C++ ein sehr blutiger Anfänger und komme nicht mehr weiter. Habe bereits mit meinem Tutor versucht den Fehler zu beheben.

    Hier meine Dateien:
    main.cpp

    #include <iostream>
    #include <conio.h>
    #include "ReFunk.h"
    using namespace std;
    
    int main()
    {
        int z;
        cout << "Demonstration der Funktionsweiser rekursiver Funktionen.";
        cout << endl << endl;
        cout << "Bitte geben Sie ihre maximale Zahl ein! ";
        cout << endl << endl;
        cin >> z;
        cout << "Main ruft jetzt die rekursive Funktion \"ReFunk\" auf ";
        ReFunk(z);
        getch();
        return 0;
    }
    

    ReFunk.cpp

    #include <iostream>
    #include "ReFunk.h"
    using namespace std;
    
    void ReFunk(int zahl)
    {
        cout << endl << "Hallo, ReFunk startet...   Zahl= " << zahl;
        if (zahl > 0)
        {
            ReFunk(zahl - 1);
        }
        cout << endl << "Hallo, ReFunk endet...   Zahl= " << zahl;
    }
    

    ReFunk.H

    #ifndef REFUNK_H_INCLUDED
    #define REFUNK_H_INCLUDED
    
    void ReFunk(int zahl);
    
    #endif // REFUNK_H_INCLUDED
    

    Error Meldung auf der Console von Code::Blocks

    ||=== RekFunk, Release ===|
    obj\Release\main.o:main.cpp:(.text.startup+0x92)||undefined reference to `ReFunk(int)'|
    ||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|

    Wenn ich die Datein in Visual Stuido einfüge und compliliere habe ich keine Probleme.

    Hoffentlich könnt ihr mir helfen 😉



  • Ich vermute du hast ReFunk.cpp nicht mitkompiliert (=nicht beim Projekt dabei).



  • Nur so eine Vermutung:
    Vorweg: Header werden in den Source-Dateien angegeben und dazu relativ geladen, müssen also nicht zum Projekt gehören bzw. der Compiler von wissen.
    In MSVC werden mit Einfügen der Source-Dateien ins Projekt diese auch für die Kompilierung beachtet.
    In CB wurde das Projekt mit main.cpp erstellt, so ist diese Datei zwangsweise bereits ein Fall zur Kompilierung. Mit deiner Fehlermeldung könnte allerdings ausgesagt werden, dass ReFunk.cpp nicht kompiliert wird! Schau mal in den Projekt-Optionen, ob ReFunk.cpp ein Häkchen hat, vielleicht wurde es nicht zum Kompilieren freigegeben.



  • Snitrem schrieb:

    ich bin hinsichtlich C++ ein sehr blutiger Anfänger

    Viel Erfolg! 🙂

    und komme nicht mehr weiter. Habe bereits mit meinem Tutor versucht den Fehler zu beheben.

    Hier meine Dateien:
    main.cpp

    #include <iostream>
    #include <conio.h>
    

    Tipp: conio.h ist systemspezifisch und kein Standard C++. Unter Code::Blocks kannst du Dir auch conio.h/getch sparen, weil Code::Blocks sowohl im Debug- als auch im Release-Modus so lieb sein kann, das Konsolenfenster bis zu einem Tastendruck aufzuhalten.

    Error Meldung auf der Console von Code::Blocks

    ||=== RekFunk, Release ===|
    obj\Release\main.o:main.cpp:(.text.startup+0x92)||undefined reference to `ReFunk(int)'|
    ||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|

    Wenn ich die Datein in Visual Stuido einfüge und compliliere habe ich keine Probleme.

    Hoffentlich könnt ihr mir helfen 😉

    Folgendes ist wahrscheinlich passiert: Du hast "main.cpp" als zu kompilierende Quellcodedatei im Projekt für deine Targets drin, "ReFunc.cpp" aber nicht. Schau in die Projekteinstellungen zu den Targets nach. Code::Blocks hat den Compiler nur für main.cpp aufgerufen und versucht dann aus dem Ergebnis (main.o) Dein ausführbares Programm zu erzeugen. Allerdings rufst du in main eine Funktion auf, dessen Definition dem Linker nicht zur Verfügung steht. Fügst Du ReFunc.cpp zum Projekt hinzu, wird auch das kompiliert und zusammen mit main.o zu einer ausführbaren Datei verlinkt.

    Du hast Dich wahrscheinlich im Code::Blocks-Menü verklickt und nur eine neue Datei (ReFunc.cpp) angelegt, ohne sie automatisch dem Projekt hinzuzufügen.



  • Vielen Dank!

    Ich habe den Fehler gefunden und konnte es beheben.

    Ihr seid Spitze ;))


Anmelden zum Antworten