C++ mit MinGW + MSYS einrichten



  • hi,

    ich habe Probleme C++ einzurichten.

    Habe MinGW inklusive MSYS installiert und schonmal ein kleines "Hello World" - Testprogramm geschrieben:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    cout << "Hello World" << endl;
    return 0;
    }
    

    In dem MinGW-Shell (Msys) wollte ich das Programm ausführen, aber es kommen Fehlermeldungen. Ich weiß aber nicht genau, was noch nicht stimmt. Entweder das Testprogramm ist falsch oder ich habe MinGW falsch eingerichtet?

    bisherige Vorgehensweise:
    - bin erst mit cd in das Verzeichnis wo das Testprogramm hello.cpp ist
    - dann hab ich in die Shell "c++ -o Test hello.cpp" eingegeben
    - Fehlermeldung:
    hello.cpp:8:2: warning: no newline at end of file (obwohl am Ende vom Programm keine neue Zeile mehr ist!!)
    C:\MinGW\bin\ld.exe: cannot find -luser32
    C:\MinGW\bin\ld.exe: cannot find -lkerne132
    C:\MinGW\bin\ld.exe: cannot find -ladvapi132
    C:\MinGW\bin\ld.exe: cannot find -lshell32
    collect2: ld returned 1 exit status

    Ich bin verwirrt.
    Hoffe es kann mir hier jemand helfen!

    Danke!



  • Wenn da aufm Hochhaus steht: "Warnung: NICHT VOM DACH SPRINGEN" ... springst du?

    hello.cpp:8:2: warning: no newline at end of file (obwohl am Ende vom Programm keine neue Zeile mehr ist!!)

    Genau deswegen meckert er ja, der will da eine haben 😉

    C:\MinGW\bin\ld.exe: cannot find -luser32
    C:\MinGW\bin\ld.exe: cannot find -lkerne132
    C:\MinGW\bin\ld.exe: cannot find -ladvapi132
    C:\MinGW\bin\ld.exe: cannot find -lshell32

    Das sieht so aus als fehlten die Pfade zu den entsprechenden Libraries, such mal wo die liegen und füge sie als Suchpfad dem compile/link kommando hinzu:

    c++ -L\pfad\zu\den\lib1 -L\pfad\zu\den\lib2 -L\pfad\zu\den\lib3 -L\pfad\zu\den\lib4 -o Test hello.cpp
    

    Ansonsten scheint das Programm vorbildlich und richtig zu sein ... noch ein bisschen Dokumentation fehlt vielleicht ... und das return 0; ist eher Kür denn Pflicht. Es empfiehlt sich vielleicht noch ein -Wall -DDEBUG -O2 beim compilieren



  • danke 😃

    ich finde aber diese bibliothekspfade nicht...
    habe auch die suchfunktion benutzt...kommt komischerweise nichts mit z.B. luser32 oÔ

    oder meinst du generell die ganzen "lib" ordner?


  • Administrator

    Visuell schrieb:

    habe auch die suchfunktion benutzt...kommt komischerweise nichts mit z.B. luser32 oÔ

    Der richtige Name von dieser Bibliothek lautet libuser32.a.
    Der GCC, bzw. eigentlich ld, folgt einem Namensschema. Man gibt -l<name der lib> als Parameter an. Dann wird nach lib<name der lib>.a gesucht. Aus -luser32 wird dann eben ein libuser32.a. Bei -lkernel32 entsteht dann ein libkernel32.a, usw.

    Zum eigentlichen Problem kann ich dir aber leider nicht helfen. Du bist allerdings auch etwas im falschen Forum. Dies gehört eher ins Compiler- und IDE-Forum. Ein zuständiger Moderator wird dich hoffentlich bald einmal verschieben.

    Grüssli



  • ich bin mir mit der aufgelösten Namensgebung unsicher ... in Linux und Windows heissen die ja unterschiedlich ... bei MinGW würde ich dann eher auf libuser32.dll tippen 🙂


  • Administrator

    padreigh schrieb:

    ich bin mir mit der aufgelösten Namensgebung unsicher ... in Linux und Windows heissen die ja unterschiedlich ... bei MinGW würde ich dann eher auf libuser32.dll tippen 🙂

    Nein, es ist die Endung *.a. *.a und *.dll sind auch zwei unterschiedliche Dinge. Das Äquivalente von *.dll unter Linux wäre *.so. Der GCC benötigt definitiv auch unter Windows die *.a Files und die kann man auch in der MinGW Installation finden (.\MinGW\lib\).

    Grüssli



  • wieder was gelernt 🙂



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ 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.



  • Um zum Problem zurückzukommen:
    Schau mal, ob in deinem MinGW-Verzeichnis unter lib die Dateien liegen (oder in einem Unterverzeichnis davon). Sollten sie da nicht liegen, stimmt irgendwas nicht. (OK, es stimmt hier auf jeden Fall irgend was nicht 😉 )
    Wo hast du denn den MinGW her und ist er auch im PATH?



  • Warum tust Du Dir das an? 🙂

    Also wenn Du unter Windows mit dem GCC arbeiten willst,dann nimm doch z.B Codeblocks oder QTCreater.Beides kostenlos, tolle GUI die Dir die Ärgernisse die Du da oben nennst fern halten.Für Neulinge kann ich QTCreator nur empfehlen, deine Windows Programme laufen dann nach einem simplen Linux Build sogar unter Linux/Unix/Mac und nicht nur auf Windows.

    Guckst Du hier: 🙂
    http://get.qt.nokia.com/qtcreator/qt-creator-win-opensource-2.0.1.exe


Anmelden zum Antworten