Lern-und cross-Plattform-Entwicklung (C++)
Ich Schreibe ein kleines C++ Programm für Spaß und für die Erweiterung von meine C++ Fähigkeiten. Seit der Geltungsbereich ist relativ klein, ich auch geplant zu versuchen, cross-Plattform-Entwicklung mit diesem Programm unterstützt sowohl Windows und Linux.
Rechne ich meine C++ - Kenntnisse sitzen irgendwo zwischen casual-und Mittelstufe: OO, ein bisschen von Vorlagen und design-patterns, STL verwendet vor und versucht, diese zu prüfen, mehr in details, ... Jedoch, während die Programmierung dieses kleine Programm, finde ich, dass je tiefer ich Grabe in C++, die mehr Schmerzen, die ich fühlen, vor allem, wenn ich komme, um das Verständnis und den Umgang mit Unterschiede zwischen den verschiedenen Plattform - /Lieferanten-Implementierung.
Die Nutzung von cross-Plattform-frameworks wie Qt, ACE, Boost scheint zu helfen, um die Entwicklung zu beschleunigen, eine Menge so das Leben leichter machen, aber ich mache mir sorgen, wenn dieser schlagen wird, mein Ziel. Kann jemand ein paar Ratschläge geben, ob es eine "best practice" für C++ cross-Plattform-Entwicklung? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es drei Dinge:
Schreiben Sie Ihren eigenen code, so dass es tragbar
Wrap-Plattform-spezifische APIs, die hinter einer Abstraktion/Isolierung/utility layer
Wählen Sie cross-Plattform-Bibliotheken
Können Sie wählen Sie option #2 und/oder #3.
Vorteile von #3 over #2 neigen dazu, Dinge wie, "Es ist schon geschrieben, debugged und unterstützt"; und die Nachteile sind wie, "ich habe, um es zu lernen, ich hätte zu zahlen, kann ich nicht unbedingt unterstützen, es selbst, und es kann nicht genau das tun, was ich will."
Entwickler werden oft bevorzugen option #3 anstelle von #2, vor allem, wenn es Kostenlose open-source (die alle drei Bibliotheken, die Sie zitiert sind).
http://blog.backblaze.com/2008/12/15/10-rules-for-how-to-write-cross-platform-code/
Sollten mehr Details zu den bereits gegebenen Antworten.
Außerdem schlage ich vor, die bestehenden Bibliotheken, die abstrakte endianness, Datentyp Größen und Unterschiede. Die folgenden Dinge sollten beachtet werden, bevor Sie Ihren cross-Plattform-Projekt.
GUI
Allgemeine Bibliotheken/frameworks
Spiel Entwicklung
Verwenden gcc. Es ist verfügbar für Windows und Linux, sowie die Bibliotheken und die Sprache, die syntax ist identisch auf beiden Plattformen.
Für die cross-Plattform-GUI-Anwendungen Qt ist eine gute Idee. Es gibt kein erhalten Weg von einer Abhängigkeit von einem GUI-framework, wenn Sie versuchen, zu erreichen, Plattform-Unabhängigkeit.
Es sei denn, Sie tun GUI Sachen cross-Plattform-ist das nicht ein großes problem.
Gibt es einige kleine Fragen zu tun, mit Dateisystemen ( unterschiedliche /\ Separatoren, erlaubte Zeichen in Dateinamen etc), aber diese sind auf der Anwendungsebene anstatt c++.
Tun großen Anwendungen wird komplexer, Sie muss um Hilfe, Datei-Standorte eine möglicherweise Sicherheit und Benutzer-Informationen in einer cross-Plattform-Weg. Für den einfachen Algorithmus Typ-Programmierung gibt es nicht ein problem.
Qt ist vor allem eine GUI-Bibliothek, obwohl es zusätzliche cross-Plattform-Dateisysteme Zeug. STL, Boost, ACE, sind cross-Plattform-aber das ist es nicht Hauptsache.
Verwenden! Ernst. Der einzige Grund, warum Sie möglicherweise nicht wollen, Sie zu verwenden ist, wenn Sie planen, arbeiten Sie in einem Umfeld, wo Sie nicht erreichbar sind. Aber, da Ihre cross-Plattform-Natur, das ist nicht wahrscheinlich.
Finden Sie, dass der nutzen aus dem Einsatz, Sie ist immens, auch wenn Sie nicht cross-Plattform. Die "best practice" von der Sie sprechen, ist in der Lage zu liefern, Ihr "Produkt" als quicly und leicht wie möglich.
Ich habe einmal eine Frage beantwortet von jemandem, der sagte, er wollte nicht, dass die Verwendung von GUI-Bibliotheken, die auf einem Niveau oberhalb von Xlib. Wäre er wirklich jemals verwendet Xlib, er würde wissen, die Schmerzen, würden wir uns alle fühlten, als gezwungen, um code auf einem so niedrigen Niveau der Abstraktion. Das macht ungefähr so viel Sinn wie wollen code in assembler, denn C/C++?Python/Perl/everthting-sonst ist einfach eine höhere Ebene abstarction.
diese Antworten sind wirklich gut, und Sie können machen Sie eine Liste finden, wo ist der Anfang. aber ich denke, dass sollten Sie Lesen, einige Artikel über "die Portierung der Anwendung".nicht relevant, mit cross-Plattform-Entwicklung, aber dies kann Ihnen sehr großen Perspektive über cross-Plattform-Entwicklung. Im cross-Plattform-Entwicklung, einem der mehr importieren, was ist Speicher, der Themen wie "endian" (byte-order - byte-Reihenfolge kann zeigen Unterschiede für tehnologies oder Plattformen)
boost. Sie kümmern sich um cross-Plattform-Sachen für Sie.
boost::filesystem ist ein großartiges Beispiel
ich denke, man kann viel lernen, wenn Sie mit ACE oder gleichwertig Bibliotheken. verbessern Sie Ihre Kenntnisse in c++ und design patterns. ich denke, dies ist die beste Sache, die Sie tun können, um verbessern Sie Ihre Programmierkenntnisse.
Wenn Ihr wirklich daran interessiert sind, Ihr code als cross-Plattform wie möglich, da viele Compiler wie möglich. Wenn Sie mit Windows und Linux, verwenden Sie VC und gcc, auf das minimum. Dadurch wird sichergestellt, dass Sie nicht complier spezifischen Eigenschaften, und Sie verlassen sich nicht auf system-spezifische Verhalten. Verwenden Sie mehr Compiler (Intel, IBM, etc.) und Betriebssystemen (OS X, Solaris) wenn Sie Zugang zu Ihnen haben.
Können Sie versuchen, mit U++ > http://www.ultimatepp.org/index.html