DJGPP findet streambuf.h nicht



  • Ein ganz einfaches HelloWorld-Programm gibt beim compilieren folgenden Fehler aus:
    In file included from c:\c\hello.cpp:1:
    c:/djgpp/lang/cxx/iostream.h:31: streambuf.h: No such file or directory (ENOENT)

    streambuf.h wird von iostream.h eingebunden, existiert aber definitiv in dem von der Fehlermeldung genannten Verzeichnis. Der Compiler wurde gerade zum 2. Mal installiert, das Problem existiert aber immer noch.

    Hier noch der Code:

    #include <iostream.h>
    
    int main()
    {
      cout << "Wieso funktioniert das hier nicht???\n";
      return 0;
    }
    


  • kinder kinder, nach 6 Jahren C++ Standard sollte man doch mal wissen, dass die Standard Header ohne .h geschrieben werden

    #include <iostream>
    

    und nicht

    #include <iostream.h>
    

    genauso natürlich mit streambuf und allem anderen



  • ähm, das kommt mir jetzt spontan aber etwas merkwürdig vor, da ich gerade vier, VIER! ('Jetzt lerne ich C++', 'Visual C++ in 21 Tagen', 'Visual C++ für Dummies' und 'Visual C++') Bücher vor mir liegen habe, die genau dies tun.

    Und zumindest 'Jetzt lerne ich..' bezieht sich auf ANSI C++.

    ???

    EDIT:
    hab's gerade den aktuellen djgpp-compiler installiert, der funktioniert jetzt und gibt brav ordentliche fehlermsgs aus. bei

    #include <iostream>
    

    lautet die übrigens:
    'cout' undeclared (first use of this function)



  • @kingruedi

    nein.
    das ist nicht der fehler. der djgpp fährt auch noch die iostream.h.
    auch wenn veraltet.

    also nicht so voreilig 😉

    @sebastian:

    ich rate dringend zu eine installation einer neuen version des djgpps, zu finden unter www.delorie.com
    dort den zip picker benutzen.

    ansonsten: du versuchst den compiler aus einem buch zu installieren? dann lese bitte auch die letzten seiten der installationsanweisungen!

    dort steht:
    diese fehlermeldung bedeutet, daß die unterstützung für lange dateinamen nicht existiert.
    dort steht auch die behebung des problems:

    in der datei djgpp.env in der zeile:

    +LFN=n das n auf y setzen.

    danach bekommst du übrigens noch eine weitere fehlermeldung:

    cannot exec stubify..

    auch dort dann folgendes tun:

    löschen der dateien specs und djgpp.djl im verzeichnis \djgpp\lib
    dann in djgpp\lib\gcc-lob_djgpp\2.81 wechseln

    dort die specs öffnen und : ACHTUNG
    die letzte zeile löschen, aber nur die, und KEIN leerzeichen übriglassen, also kein return auf eine leere zeile machen.

    wie gesagt: entweder LESEN (in deinem buch die installationsanweisungen) oder den neuen djgpp von delorie ziehen (wäre sowieso besser.

    so long 🙂



  • @sebastian

    natürlich hat kingruedi recht mit dem veralteten header iostream.h
    den nehmen wir bitte nicht mehr!

    nimm

    #include <iostream>
    using namespace std;

    alte bücher, alte header.. aber du kannst ja denken, und es einfach immer ändern.



  • @elise
    danke für die ausführliche antwort 🙂
    habe, wie in dem posting über dir geschrieben (konntest dus chlecht wissen, hast ja die antwort geschrieben), gerade den aktuellen djgpp installiert und werde jetzt mal kurz das ganze mit .h compilieren...momentchen 😃



  • nix .h 😉

    machs gleich richtig. zahlt sich aus, die folgecompiler mögen deinen code dann wohlmöglich nicht mehr, und du hast nur mehrarbeit.
    so long



  • ok, habe jetzt deine lösung genommen - und jetzt gibt er meldung a la
    C:/djgpp/tmp/cco15Hgi.o(.text+0x3f):test.cpp: undefined reference to 'std::cout'
    aus...?
    ich verwende gar kein std::cout

    oder auch monstermeldungen a la:
    C:/djgpp/tmp/cco15Hgi.o(.text+0x44):test.cpp: undefined reference to 'std::basic_ostream<char, std::char_traits>char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'

    der vc++-compiler compiliert das sang- und klanglos ohne jede warnung/error.



  • Du linkst die C++ Standard Library nicht mit 🙄



  • mensch junge, du hast zu viel c++ gecodet, sei doch nicht so cryptisch 🙂

    ich komm von der vb-front, daher ist mir das ganze 'includieren' eh schon höchst suspekt und fremd 😃

    also, was muss ich für die c++ standardbibliothek denn noch alles einbinden?



  • zeig mal wie du kompilierst.

    Benutzt du gcc als Kommando? Wenn ja probier lieber mal g++ (unter djgpp heisst das aber glaub ich anders gpp oder gxx ka. wegen den DOS Namen)



  • sebastian schrieb:

    ähm, das kommt mir jetzt spontan aber etwas merkwürdig vor, da ich gerade vier, VIER! ('Jetzt lerne ich C++', 'Visual C++ in 21 Tagen', 'Visual C++ für Dummies' und 'Visual C++') Bücher vor mir liegen habe, die genau dies tun.

    Diese Bücher sind auch nicht gerade als Glanzpunkte der Standardkonformität bekannt 😉 Es gibt -- auch heute noch -- sehr viele Bücher, die entweder schlicht und einfach veraltetes Wissen enthalten, oder sich einfach einen Dreck um den Standard scheren und nur das lehren, was ein bestimmter Compiler unterstüzt.



  • @king
    yop, habe 'gcc' ohne weitere parameter genommen, gpp funktioniert einwandfrei - mit einem problem: mit welchem parameter kann ich festlegen, wo er die exe erstellt? 😃

    @basher
    tolle aussichten. dass einige von den büchern veraltert sind, war mir klar, aber zumindest von "jetzt lerne ich c++" dachte ich, dass es sich auf den ansi-standard bezieht.
    'visual c++ 6.0' macht auch einen ziemlich kompetenten eindruck und dürfte sich zumindest and die windowsstandards halten...allerdings ist der author irgendwie ein IchMachDieDingeKompliziert-Fetischist - umso mehr unnötige fachbegriffe und sätze zum erklären, umso besser...



  • hallo sebastian

    das buch: jetzt lerne ich c++, ist ganz ok.

    so, und nun versuchs mal mit

    gxx deinedatei.cpp -o deinedatei.exe

    so long

    ps:
    1. lass das .h weg
    2. schreibe entweder: using namespace std;
    oder std::cout
    nicht mischen
    3. lerne faqs lesen! (zum beispiel, welcher compileraufruf für c++ zuständig ist 😉 )



  • alles bestens, danke :))

    ah übrigens, hab da noch ein problem...wie kann ich das fenster offen halten?
    :D, kleiner scherz

    nun denn, das nächste problem schaut bestimmt bald vorbei. besten dank für die schnelle hilfe.




Anmelden zum Antworten