Plattformunabhängig



  • hi leutz,

    ich hab da mal ne allgemeine Frage: in wie weit kann ich mit c++ software programmieren die Betriebssystem unabhängig läuft, wenn das überhaupt möglich ist.

    Zur zeit verwende ich windows, dass mir aber langsam nicht mehr reicht.

    Mir ist bewusst, das programmbibliotheken von windows und z.b. linux unterschiedlich sind deshalb möchte ich nur wissen ob und wie weit es möglich ist.



  • kreen: Kommt ganz darauf an, was Du machen möchtest, aber mit boost, ACE, wxwidgets und Co. sollte sich schon einiges machen lassen. 🙂



  • in erster linie ist es wichtig das Programm vernünftig zu strukturieren. Also allen bs-abhängigen code irgendwie auslagern.

    dann, wie nman schon sagte, gibts bibliotheken die man nehmen könnte.

    und als letzten punkt, um wirklich die einzige, ultimative unabhängigkeit zu bekommen: OpenSource machen! 🙂
    Wobei dabei auch Punkt 1 wieder ganz wichtig ist.



  • Hi,
    afaik ist jeder Code der rein auf dem C++ Standard aufbaut, also Standardbiliotheken, Standardcontainer usw. benutzt betriebssystem-unabhaengig (oder sollte es sein). Also sollte auf einem Windowsrechner genauso kompiliert werden koennen wie auf einem Mac, etc. Probleme die aber dabei (afaik seltener) auftreten koennen liegen dann daran wie gut der jeweilige Compiler den Standard von C++ implementiert hat.

    afaik definiert man plattformun-abhaengigkeit ueber den Aufwand, den man an einem Code leisten muss um das Programm dann von einem Betriebssystem (aber auch spez. Hardware usw) auf ein anderes zu uebertragen. Bei C++ wird es v.a. immer dann problematisch, wenn man versucht Hardware anzusteuern (zB den Drucker) oder auch die Grafik, also Fensteroberflaechen usw sind afaik betriebssystem-abhaengig (kann aber jetz nix zu qt sagen 🙂 ).

    Java hat diese Probleme nicht und ist ueberall lauffaehig, wo die entsprechende Virtual Machine installiert ist. Allerdings bietet eben gerade da C++ imo auch die Vorteile eine C-aehnliche Hardwarenaehe geben zu koennen und i.allg. schnell zu sein. Wenn Du C++ programmierst kannst Du die Vorteile der individuellen Maschine ausnutzen, was logischerweise bei Plattform-Unabhaengigkeit schwierig ist.



  • wendy schrieb:

    afaik definiert man plattformun-abhaengigkeit ueber den Aufwand, den man an einem Code leisten muss um das Programm dann von einem Betriebssystem (aber auch spez. Hardware usw) auf ein anderes zu uebertragen.

    Nein, das wäre Portabilität; Du verwechselst Plattformunabhängigkeit und Portabilität. 🙂

    Zu Java: Java ist nicht plattformunabhängig, Java _ist_ eine Plattform.



  • Also wenn du wirklich programme schreiben willst die auf Windows, Linux, etc. laufen würde ich dir zu einer Plattformübergreifenden Bibliothek raten. Mit QT habe ich keine Erfahrungen gemacht, soll aber laut aussagen hier im Board sehr gut sein(kostet natürlich auch was). Mit wxWidgets habe ich schon gearbeitet und fand dies Persönlich sehr gut.



  • Ich kann nur GTK empfehlen. Enthalten ist unter anderem glib welche Datentypen und Funktionen "platformunabhängig" definiert. Zum Beispiel werden eigene Datentypen mit einer festen Größe verwendet, da die Größe eines Integers zwischen verschiedenen Maschinen oder Plattformen varrieren kann. Zudem bekommst natürlich noch die Möglichkeit eine grafische Oberfläche per GTK zu erstellen, was eigentlich der Hauptzweck davon ist. Ich persönlich habe GTK auf Windows und Linux installiert. Auf Windows bringe ich so GIMP2 zum Laufen (ohne irgendwelche Emulatoren usw.). Das heißt wenn du platformunabhängig "normale" Anwendungen schreiben willst kann ich dir nur GTK empfehlen, somal es im Gegensatz zu Qt unter der GPL steht.
    Wenn du platformunabhängige Spiele schreiben willst, so wär natürlich OpenGL für die Grafik zu empfehlen bzw. SDL was dir auch noch einige andere Dinge wie Zugriff auf Hardware und Sound gewährt.



  • @nman: stimmt 🙂



  • Das einzige was nervt ist, dass man keine Binarys für alle Betriebssysteme machen kann. Ich als Hobbyprogrammierer hab keinen Bock mir extra MAC usw. zu installieren, nur damit auch MAC-User mein Prorgamm benutzen können. Das verstehe ich auch unter Plattformunabhängigkeit.



  • Deswegen gibt es cross-compiler...



  • @Glamdrink
    Einfach den Code veröffentlichen. Sollen die sich den doch selbst kompilieren 😉



  • @Kingruedi: Is mir schon kalr, aber wenn ich ein Spiel entwickele, kann ich nicht erarten, dass diejenigen, die es Spielen wollen nen Compiler haben.

    @Mastah: Ich kenn keinen wirklich guten, außerdem ist es sehr umständlich.


Anmelden zum Antworten