Christoph Zurnieden: Fragen zu C++

Beitrag lesen

Hallo,

gcc -mno-cygwin -o test hallo.cpp

versucht, aber das will nmicht funktionieren, da bekomme ich 100 Fehler wie  "undefined reference to cout", "undefined reference to ostream::operator<<<int>"...

"undefined reference to xxx" ist eine Fehlermeldung vom Linker, wobei xxx eine Funktion ist, die benutzt wurde aber nirgendwo definiert. "<<" ist übrigens auch eine Funktion, auch wenn si nicht so aussieht. Steht ja auch in der zweiten Fehlermeldung:
"undefined reference to ostream::operator<<<int>"
                                                               ^^^^
Wobei das <int> bedeutet, das die Funktion "ostream::operator<<" Integer als Argument haben will. Die einzelnen Zeichen einer Zeichenkette werden computerintern als Integer dargestellt. Ja, das heißt auch, das man damit rechnen kann ;-)

Brauche ich dann vielleicht einen anderen Header und andere Befehler?

Etwas auf die Standardausgabe auszugeben ist intern ein recht komplizierter Vorgang. Da müssen Dateien geöffnet und beschrieben werden, alles kontrolliert und evt gebuffert, Speicher alloziert und freigegeben usw.
Das kannst Du selbstverständlich auch alles selber machen, allerdings solltest Du das doch tunlichst den entsprechenden Bibliotheken überlassen, das ist erheblich bequemer.

Andere Header nicht, aber warscheinlich musst Du dem Linker noch sagen, dass er andere Bibliotheken verwenden soll. Wie gesagt, ich kenne mich mit Cygwin nicht soo sehr aus, daher überlasse ich das lieber mal einem Experten.
Naja, das weiß ich natürlich überhaupt nicht wie das geht ;-) Aber was ist denn der "Linker"?

Ein Linker ist ein kleines Progrämmchen, das die Funktionen aus Deinem Programm raussucht und mit den entsprechenden Funktionen in den passenden Bibliotheken verknüpft und in die rechte Reihenfolge bringt (wenn er gut ist). Außerdem kann er auch noch verschiedene Teilbinaries zusammenfassen.

Udn was hat es mit den verschiedenen header-Dateien aus sich? Du hast gesagt Du hast mit der <iostream.h> lange nicht mehr garbeitet, was verwendest Du sonst und wieso? Muß ich dann für jede Header-Datei total umlernen?

Nein, nicht umlernen, sondern nur lernen. Es gibt eine Reihe von Standardfunktionen, die in einer kleinen Reihe Header defniniert werden. Die gilt es zu lernen, die sollten sitzen, es sind auch nicht viele.
Außerdem sollte bekannt sein, wie so ein Header funktioniert, damit man auch fremde Header lesen kann, denn in diesen Headern ist die nötige Information um unbekannte Funktionen nutzen zu können.

Hab auch noch nie richtig mit Linux gearbeitet, eigentlich fast nur auf meinem webserver mit SSH. Scheint aber ne Ecke komplizierter zu sein als PHP/PERL, vor allem da ich in C++ ja leider nicht die vielen schönen Funktionen und Module habe wie ich PHP und MySQL!

Direkt nicht, indirekt vielleicht, denn es ist durchaus möglich, das sich schonmal jemand hingesetzt hat und eine entspr Bibliothek geschrieben hat.
Nur gilt es die zu finden ;-)

Wenn ich denn mal so einen Einstieg gefunden habe und die Grundlagen kann, ist es dann schwierig ein GUI-Tool ür Win zu basteln?

Kommt auf die GUI Bibliothek an. Wenn Du z.B. QT nimmst ist es relativ einfach.
(Ich weiß allerdings nicht, ob schon jemand die GPL Version von QT nach Windows hin portiert hat)

Ich weiß, kann man nicht pauschal beantworten, nur habe ich zur Zeit übehaupt keine Vorstellung was da auf mich zukommt, und geht das überhaupt vernünftig ohne MS Visual Studio oder Visual C++?

Es geht _nur_ vernünftig _ohne_ den Visual Crap.

Die enhaltenen Compiler sind nicht besonders und zusammenklicken kannst Du Deine GUI auch mit dem Designer von QT, der kost' nix, der ist schon dabei, falls Du QT nehmen solltest. Und die paar extra Bibliotheken, die da noch bei Visual* dabei sind, sind das Geld nicht wert. Das einzig Interessante wäre die ganze Dokumentation, aber die gibt es fast alle auch im Netz und vor allem: dafür soviel Kohle ausgeben? Na, ich weiß ja nicht ;-)

Nein, bevor Du eine IDE nutzt solltest Du zumindest eineige kleiner Anwendungen mit GUI von Hand geschrieben haben, dann erst kannst Du IDEs auch richtig nutzen. Und wenn Du soweit bist, nimm keine IDEs von MS, es gibt für das Geld bessere.

BTW: lernst Du eigentlich nach Buch?

so short

Christoph Zurnieden