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
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 wechselndort 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
-
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::coutoder 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 scherznun denn, das nächste problem schaut bestimmt bald vorbei. besten dank für die schnelle hilfe.
-