main.cpp:1: iostream: No such file or directory



  • Wenn ich unter Linux so kompiliere:

    g++ -o prog main.cpp

    funktioniert es.

    Unter Windows aber:

    C:\>g++ -o prog main.cpp
    main.cpp:1: iostream: No such file or directory

    Vermutlich muss die Bibliothek eingebunen werden, aber wie 😕



  • Du musst das Includeverzeichnis mit angeben. Vermutlich kann man das auch über Umgebungsvariablen machen, was unter Linux wohl schon eingestellt ist und unter Windows noch nicht.



  • Eigentlich sollte er die C++-Header auch ohne Angabe eines zusätzlichen Headerverzeichnisses finden. Welche GCC-Version ist das denn? Mach mal "g++ -v" und poste das hier.



  • Steven schrieb:

    Eigentlich sollte er die C++-Header auch ohne Angabe eines zusätzlichen Headerverzeichnisses finden.

    Ne, eigentlich nicht. Woher soll denn der Compiler wissen, in welchem Verzeichnis er nach Standard Header Dateien suchen soll?



  • Mein MinGW/msys findet sie sofort, ohne dass ich einen Finger dafür krümmen muss, also nichts mit "-Iblah". Unter Linux ebenfalls kein Problem. Ich weiß schon, dass jede MinGW-Installation anders ist, da Windows ja kein einheitliches Dateisystem mit "/usr/bin", "/usr/lib" u.ä. hat, aber der MinGW-Installer sollte sich eigentlich darum kümmern, dass der Compiler sein Zeug findet (durch Eintrag in die Registry oder ähnliches).

    Es kann allerdings auch sein, dass es bei den neueren Versionen des MinGW ein Problem gibt. Ich programmiere seit einem halben Jahr nicht mehr unter Windows, weshalb ich darüber nichts Näheres weiß. :p



  • Ich hab ja auch nicht gesagt, dass du -I... als Kommandozeilenparameter verwenden MUSST. Fakt ist, dass du die Include-Verzeichnisse in irgendeiner Art und Weise dem Compiler bekannt machen musst. Vermutlich sind bei dir irgendwelche Umgebungsvariablen eingestellt. Oder vielleicht sucht der GCC unter Linux aber auch in einem Defaultverzeichnis. Du schriebst ja irgendwas von "usr/lib". Who knows.

    Steven schrieb:

    aber der MinGW-Installer sollte sich eigentlich darum kümmern, dass der Compiler sein Zeug findet

    Nein, sollte er nicht. Woher will denn ein Compiler wissen, welche Standard Header man verwenden will. Vielleicht gefällt einem ja stlport oder sgi stl besser, als das, was zum Compiler mitgeliefert wurde.



  • Steven schrieb:

    Eigentlich sollte er die C++-Header auch ohne Angabe eines zusätzlichen Headerverzeichnisses finden. Welche GCC-Version ist das denn? Mach mal "g++ -v" und poste das hier.

    Using builtin specs.
    gcc version 2.95.2 19991024 (release)



  • Oh, das Ding ist wirklich steinalt, ich glaube, bei dem Teil muss man noch die alten Header (ohne namespace std, mit .h-Endung) verwenden.
    Bevor du dir aber mit einem alten Compiler deinen Programmierstil versaust, lade dir lieber von http://www.mingw.org die neueste Version des MinGW-Compilers samt msys runter. Hier geht es zur Downloadseite. Du brauchst die Dateien MinGW-3.1.0-1.exe und MSYS-1.0.10.exe.



  • Hey, vielen Dank!

    Ich war schon auf mingw.org, wusste aber einfach nicht, was ich da runterladen soll. Da sind unzählige Dateien und fast immer nur 100kb groß.



  • Ich habe beide Dateien runtergeladen, aber nur MinGW installiert - es funktioniert alles (die Libraries werden auch gefunden).

    Wozu brauch ich dieses MSYS? Wozu ist das?



  • msys stellt weitere von Unix bekannten Tools wie z.B. sed zur Verfügung. Das brauchst du unter anderem, wenn du ein Paket kompilieren willst, das automake verwendet, also z.B. die meisten GNU-Sachen.


Anmelden zum Antworten