Quellcode in mehrere Dateien aufspalten



  • Ich erhalte zwei kryptische Fehlermeldungen bei dem Versuch mein Projekt zum Laufen zu bringen. Die verwendete Entwicklungsumgebung heißt "Dev C++".

    In meinem Lehrbuch wird mir gerade vermittelt, wie man seinen Quellcode in mehrere Dateien aufspaltet, da dies später noch wichtig werden soll.

    Ich habe also ein Übungsprogramm geschrieben, in dem man die Werte "Stärke" und "Geschwindigkeit" hat. Diese sollen mittels Funktionen um einen Prozentwert gesteigert werden.
    Die Deklaration und ebenso die Definition dieser soll in jeweils einer Extra-Datei erfolgen.

    Somit habe ich drei Dateien:
    Rollenspiel.cpp -> Hier ist der Hauptcode, hier werden die Funktionen aufgerufen
    Funktionen.hpp -> Hier befinden sich die Funktionsdeklarationen
    Funktionen.cpp -> Hier befinden sich die Funktionsdefinitionen

    Hier die einzelnen Codes der Dateien plus ihrer Fehlermeldung (bei der Headerdatei allerdings trat kein Fehler auf)

    Rollenspiel.cpp:

    #include <iostream>
    #include "C:\Users\Henry\Desktop\C++\Übungen\Rollenspiel\Quelldateien\Funktionen.hpp"
    
    int nicht_schliessen;
    
    using namespace std;
    
    int main()
    {
      int Staerke;
      float Geschwindigkeit;
      int Steigerung;
    
      cout << "Staerke angeben: ";
      cin >> Staerke;
    
      cout << "Geschwindigkeit angeben: ";
      cin >> Geschwindigkeit;
    
      cout << "Steigerung in Prozent angeben: ";
      cin >> Steigerung;
    
      Staerke = Attribut_verbessern(Staerke, Steigerung);
      Geschwindigkeit = Attribut_verbessern(Geschwindigkeit, Steigerung);
    
      cout << "Neuer Wert fuer Staerke: " << Staerke << endl;
      cout << "Neuer Wert fuer Geschwindigkeit: " << Geschwindigkeit << endl;
    
      cin >> nicht_schliessen;
    }
    

    Fehlermeldung:
    C:\Users\Henry\AppData\Local\Temp\ccU6tIjj.o Rollenspiel.cpp:(.text+0x95): undefined reference to Attribut_verbessern(int, float)' C:\\Users\\Henry\\AppData\\Local\\Temp\\ccU6tIjj.o Rollenspiel.cpp:(.text+0xb2): undefined reference toAttribut_verbessern(float, float)'
    c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe C:\Users\Henry\AppData\Local\Temp\ccU6tIjj.o: bad reloc address 0xc in section `.xdata'
    C:\Users\Henry\Desktop\C++\Übungen\Rollenspiel\Quelldateien\collect2.exe [Error] ld returned 1 exit status

    Funktionen.hpp

    #include "C:\Users\Henry\Desktop\C++\Übungen\Rollenspiel\Quelldateien\Funktionen.hpp"
    
    int Attribut_verbessern(int _Attribut, float _Prozent)
    {
    	int Attribut_neu = _Attribut * (1 + _Prozent / 100);
    	return Attribut_neu;
    }
    
    float Attribut_verbessern(float _Attribut, float _Prozent)
    {
    	float Attribut_neu = _Attribut * (1 + _Prozent / 100);
    	return Attribut_neu;
    }
    

    Fehlermeldung:
    C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\libmingw32.a(lib64_libmingw32_a-crt0_c.o) In function main': 18 h:\\crossdev\\src\\mingw-w64-v3-svn\\mingw-w64-crt\\crt\\crt0_c.c undefined reference toWinMain'
    C:\Users\Henry\Desktop\C++\Übungen\Rollenspiel\Quelldateien\collect2.exe [Error] ld returned 1 exit status*

    Funktionen.hpp

    int Attribut_verbessern(int _Attribut, float _Prozent);
    float Attribut_verbessern(float _Attribut, float _Prozent);
    

    *Fehlermeldung
    (wenigstens hier) keine
    *

    Wo ist dieser verdammte Fehler? 😕 Ich kriegs einfach nicht gebacken



  • Deine Fehlermeldungen sind Fehler vom Linker. Du versuchst momentan wohl jede *.cpp Datei einzelnd zu compilieren. So klappt das dann natürlich nicht. Sind alle deine Dateien im gleichen Projekt?

    Im übrigen schreibt man nicht den kompletten Pfad beim #include. Wenn die Datei im gleichen Verzeichnis liegt reicht es einfach den Namen ohne jeglichen Pfad anzugeben. Wenn man Aufgrund einer großen Anzahl doch mehrere Ordner anlegt benutzt man relative Pfade.



  • Vengeancos schrieb:

    Wo ist dieser verdammte Fehler? 😕 Ich kriegs einfach nicht gebacken

    zeig' mal den Linker-Aufruf



  • s. die beiden ersten Antworten in undefined reference to...



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten