/rant/: GCC, where's your god now?!?
-
~(Es folgt ein in Worte gefasster Sturm der Entrüstung. Ich bin mir bewusst, wie ich mit diesem Problem umzugehen habe und werde also auch nicht daran zu Grunde gehen. Dennoch muss ich es irgendwo los werden. Vielen Dank für das Verständnis^^)
/rant/:~
Sehr geehrte Damen und Herren!
Ich wollte gerade ein grösseres Projekt für andere Betriebssysteme und Entwicklungsumgebungen fit machen (eigentlich ist es das bereits, zumindest habe ich mir Mühe gegeben, alles standardkonform zu machen) und darum mal mit GCC kompilieren. Also installiere ich mal eben Code::Blocks mit MinGW im Schlepptau. Dann importiere ich besagtes Projekt. So weit, so gut. Dann wird es Zeit, einmal den tollen Compiler anzuwerfen - und jagt mir sofort über 9000 (;)) Fehler um die Ohr'n! Und dies, obwohl ich unter Visual C++ immer auf Stufe 4, also der höchsten Warnstufe arbeite. Okay denk ich mir, da ist mein geliebtes Visual C++ 2008 möglicherweise doch nicht so standardkonform wie Microsoft immer behauptet. Halb so wild, wir alle können uns noch diffus an die alten Zeiten mit Visual C++ 6 erinnern, als einem die Masse dieser Inkonformitäten beinahe schon einen Strick knüpfen liess. Doch schon kurze Zeit später muss ich entsetzt zur Kenntnis nehmen, dass die Welt plötzlich schrecklich verkehrt ist! Fehler die keine sein sollten verhindern mein Vorhaben immer wieder - and so I keep stripping my project down. Down to a single file in the end! Nun steht nur noch
int main()
da; mein eigentliches Projekt ist längst wieder in den Händen von VC. Im folgenden der Sourcecode:#include <iostream> using namespace std; int main() { wcout << L"Hello world!" << endl; return 0; }
Nun versuche ich dieses jämmerliche Häufchen Elend, stellvertretend für mein eigentliches Projekt mit über 250KB Sourcecode, zu kompilieren. Aber nein, Fehlanzeige! Richtig - dieses Zeug kann man nicht kompilieren. Nicht mit GCC/MinGW! So leid es mir auch tut: da bleibt mir schlicht und ergreifend die Fresse offen! Code::Blocks und GCC haben den Anspruch, eine vollständige und standardkonforme Entwicklungsumgebung für C++ zu bilden. Eine Umgebung, welche Visual C++ zu einer Art "Bonzenwerkzeug" macht; zu einer Umgebung für Leute, die den Microsoft Look mögen. Oder für Leute, welche unbedingt einen Tausender für die Professional Version rauswerfen wollen. Was weiss ich schon? Immerhin bekomme ich damit nicht einen so absolut lächerlichen und unakzeptablen Fehler gemeldet, wie wenn ich MinGW verwende!
main.cpp, 7, error:
wcout' was not declared in this scope`Was zum Geier soll das bedeuten, frage ich mich natürlich. Gewohnt, meinen Problemen immer ganz auf den Grund zu gehen bevor ich an einem Workaround zu arbeiten beginne, gebe ich einfach mal die gesamte Meldung als Google Query ein. Und was muss mein ohnehin bereits arg strapaziertes Auge erkennen? `wcout' is not a member of `std', datiert
May 4th, 2008
. Einige Zitate aus dem Forum:WitchCraft schrieb:
I have a problem with compiling unicode C++ programs.
I'm developing a very little cross-platform application.
Now I use Unicode in Linux, and it works very well.
Compiling the same with MinGW on Windows outputs:
``std::wios' has not been declaredload.hpp:51: error: `std::wifstream' has not been declared
load.hpp:69: error:
wofstream' is not a member of
std'`
Now there is a problem with Unicode, so I wrote a little test program to be sure:#define UNICODE #define _UNICODE #define __UNICODE #include <iostream> #include <fstream> int main() { std::cout << "Test ASCII\n"; std::wcout << L"Test UNICODE! \n"; return 0; }
`min@FROOGLEBOT ~/dialog
$ g++ bla.cpp -o bla`
This outputs:
bla.cpp:11: error:
wcout' is not a member ofstd'
Anybody knows what to do about this?
Darauf wird der arme Benutzer auf eine Seite verwiesen, welche zum Zeitpunkt, an welchem ich diesen tollen Beitrag verfasse, aus diversen technischen Gründen nicht erreichbar ist. Die Reaktion darauf:
WitchCraft schrieb:
8+ years of Unicode and the C++ STL hasn't yet been ported to MinGW so you need to use 3rd party Software ? Disgusting.
Alrighty then! MinGW hat nicht einmal eine konforme Implementierung der standardmässig vorgegebenen Bibliotheken! Und was ist die Reaktion der Open Source Gebrüder?
tseliot schrieb:
Why don't you try QT4 (which is cross platform)? QStrings use unicode.
You cannot be serious! QT? Nope. Obiges Progrämmchen hat gefälligst zu funktionieren, denn niemand der auch nur ansatzweise vernünftig ist wird für so etwas grundlegendes eine fette Bibliothek à la QT installieren. Schon gar nicht, wenn die besagte Funktionalität seit Jahren offizieller Bestandteil des Standards ist! Worauf ich hinaus will: MinGW wird bei Code::Blocks als standard Variante des gelobten GCC mitgeliefert und kann noch nicht einmal das simple "Hello, World!"-Programm kompilieren? Wo ist dieser tolle Compiler geblieben, von dem ich so viel gehört habe? Der GCC, den man als empfohlene Variante bekommt ist, ich sage es nur ungern und mit purem Entsetzen, eine amputierte und infolge dessen komplett unbrauchbare Umsetzung des Standards, welche in Anbetracht der zum jetzigen Zeitpunkt frei verfügbaren Konkurrenz durch andere Compiler komplet überflüssig geworden ist! Ich habe meinerseits diesem entsetzlichen Gefrickel ein Ende gesetzt, noch bevor es überhaupt richtig begonnen hat - Code::Blocks & MinGW haben gerade einen Flug ins Nirvana gebucht bekommen^^ So etwas tu' ich mir (und meinem Code natürlich) bestimmt nicht an! Bleibt nur zu hoffen, dass der grosse Gott der Softwareentwicklung (INB4 Blasphemie ;)) sowas im GCC, welchen man bei diversen Linux Distros mitgeliefert bekommt, nicht zu gelassen hat. Ansonsten sehe ich schwarz für deren Zukunft...
Hochachtungsvoll,
Ein eher verärgerter Programmierer
-
lol
-
die mangelnde Unicode-Unterstuetzung fuer MinGW ist eigentlich ein halbwegs bekanntes Problem. MinGW war bis zur Version 4.3 auch nie ein offizielles GCC-Target; jetzt ist es eine "secondary plattform", also zwar offizielle Plattform, aber immer noch "second class citizen". Und es wurde auch entsprechend stiefmuetterlich behandelt. Demnach tust du falsch daran, den Leuten hinter dem GCC die Schuld daran zu geben -- auch wenn ich zugebe, obwohl mingw32 jetzt eine offiziell supportete secondary plattform ist, hat sich die Situation (bis jetzt?) nicht wirklich gebessert.
Dass der "wechsel doch auf Qt"-Vorschlag war natuerlich eine Schnappsidee, aber wenn du die Wayback-Machine fuer den im Ubuntuforum angegebenen Link benutzt haettest, wuesstest du, dass du die libstdc++ einfach mit stlport haettest austauschen koennen: http://web.archive.org/web/20080121070026/http://www.mingw.org/MinGWiki/index.php/wide+characters
Wenn du einfach nur mal Luft ablassen wolltest, ist das natuerlich auch ok
-
/rant/ schrieb:
[...]
... Anbetracht der zum jetzigen Zeitpunkt frei verfügbaren Konkurrenz durch andere Compiler komplet überflüssig geworden ist!
[...]
Hast Du da ein paar Tips?
-
Belli schrieb:
Hast Du da ein paar Tips?
der microsoft c++ compiler
der beste freie compiler auf windows...
-
-
ja gut was man halt unter frei versteht...