Erhebliche Probleme beim Kompilieren



  • Hallo Freunde der Sonne. Beim Kompilieren des unten vorgestellten Programmes erhalte ich folgende Fehlermeldung:

    Berechnung.exe:cygming-crtbegin.c:(.text+0x500): multiple definition of `__gcc_register_frame'
    C:/MinGW/bin/../lib/gcc/i686-w64-mingw32/5.3.0/crtbegin.o:cygming-crtbegin.c:(.text+0x0): first defined here
    Berechnung.exe:cygming-crtbegin.c:(.text+0x560): multiple definition of `__gcc_deregister_frame'
    C:/MinGW/bin/../lib/gcc/i686-w64-mingw32/5.3.0/crtbegin.o:cygming-crtbegin.c:(.text+0x60): first defined here
    Berechnung.exe:crtexe.c:(.CRT+0x10): multiple definition of `mingw_pcinit'
    C:/MinGW/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/lib/../lib/crt2.o:crtexe.c: (.CRT$XIAA+0x0): first defined here
    Berechnung.exe:crtexe.c:(.data+0x0) : multiple definition of `__mingw_winmain_nShowCmd'
    C:/MinGW/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/lib/../lib/crt2.o:crtexe.c:(.data+0x0): first defined here
    Berechnung.exe:crtexe.c:(.CRT+0x4): multiple definition of `mingw_pcppinit'
    C:/MinGW/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/lib/../lib/crt2.o:crtexe.c:(.CRT$XCAA+0x0): first defined here
    Berechnung.exe:crtexe.c: (.idata+0x20c): multiple definition of `_imp___ZSt4cout'
    Berechnung.exe:crtexe.c: (.idata+0x20c): first defined here
    Berechnung.exe:crtexe.c: (.idata+0x208): multiple definition of `_imp___ZSt3cin'
    Berechnung.exe:crtexe.c: (.idata+0x208): first defined here
    C:\Users\HENRYW~1\AppData\Local\Temp\cciAMBp7.o:Berechnung.cpp: (.text+0x0): multiple definition of `main'
    Berechnung.exe:Berechnung.cpp: (.text+0x570): first defined here
    C:\Users\HENRYW~1\AppData\Local\Temp\cciAMBp7.o:Berechnung.cpp: (.text+0x21): multiple definition of `_fu0___ZSt4cout'
    Berechnung.exe:Berechnung.cpp: (.text+0x591): first defined here
    C:\Users\HENRYW~1\AppData\Local\Temp\cciAMBp7.o:Berechnung.cpp: (.text+0x69): multiple definition of `_fu1___ZSt4cout'
    Berechnung.exe:Berechnung.cpp: (.text+0x5d9): first defined here
    C:\Users\HENRYW~1\AppData\Local\Temp\cciAMBp7.o:Berechnung.cpp: (.text+0x31): multiple definition of `_fu2___ZSt3cin'
    Berechnung.exe:Berechnung.cpp: (.text+0x5a1): first defined here
    C:\Users\HENRYW~1\AppData\Local\Temp\cciAMBp7.o:Berechnung.cpp: (.text+0x79): multiple definition of `_fu3___ZSt3cin'
    Berechnung.exe:Berechnung.cpp:(.text+0x5e9): first defined here
    C:/MinGW/bin/../lib/gcc/i686-w64-mingw32/5.3.0/crtbegin.o:cygming-crtbegin.c:(.text+0x22): undefined reference to `_Jv_RegisterClasses'
    collect2.exe: error: ld returned 1 exit status
    

    Betriebssystem: Windows 10 Home
    Plattform: Lenovo Miix (PC-Tablet-Hybrid Netbook)
    Kompilierer: MinGW (Von den GNU-Leuten)

    Programm "Berechnung.cpp":

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int summe;
        int summand1;
        int summand2;
        // Lies zwei Zahlen ein.
        cout << "Zwei ganze Zahlen eingeben";
        cin >> summand1 >> summand2;
        /* Berechne die Summe
           beider Zahlen. */
        summe = summand1 + summand2;
        // Zeige das Ergebnis auf dem Bildschirm an.
        cout << "Summe" + summe;
    
        cin >> summe; // damit Programm nicht sofort schließt   
    }
    

    Batchdatei "Kompilieren.bat":

    g++ -o -std=c++14 Berechnung.exe Berechnung.cpp
    pause
    

    Alle Dateien liegen im selben Ordner.
    Ich danke für alle Antworten!

    Nachsatz:
    Ich mußte die Fehlermeldung leicht verfälschen, da die Forenalgorithmen dortige Zeichenfolgen als Smileys erkennen, von denen nur 10 erlaubt sind.



  • Das ist kein C++-Problem, du hast einfach die Manpage zum g++ nicht gelesen und ignoriert, dass die Ausgabedatei direkt nach -o kommen muss.



  • Okay, funktioniert aber immer noch nicht.
    Jetzige Ausgabe sind drei kryptische Zeichen, obwohl sie "Summe: Zahl" lauten sollte.



  • Dexter1997 schrieb:

    Jetzige Ausgabe sind drei kryptische Zeichen, obwohl sie "Summe: Zahl" lauten sollte.

    Zeig mal eine Quelle für Deine Annahme.
    ProTipp: Warnungen im Compiler einschalten.



  • Ich hab den Fehler gefunden, da steht ein "+" anstelle eines "<<"



  • Dexter1997 schrieb:

    Ich hab den Fehler gefunden, da steht ein "+" anstelle eines "<<"

    Gut.
    Zum Trost: Du bist nicht der erste, dem das passiert...

    Ansonsten warnt der g++ tatsächlich nicht, clang allerdings schon:

    $ clang++ -Wextra -Wall -pedantic -std=c++14 test.cc -o test 
    test.cc:16:18: warning: adding 'int' to a string does not append to the string
          [-Wstring-plus-int]
            cout << "Summe" + summe;
                    ~~~~~~~~^~~~~~~
    test.cc:16:18: note: use array indexing to silence this warning
            cout << "Summe" + summe;
                            ^
                    &       [      ]
    1 warning generated.
    

    Trotzdem übernimm -Wextra -Wall -pedantic in Deinen Compileraufruf.


Anmelden zum Antworten