2009-07-31 10 views
4

Ich möchte lernen, C++ auf verschiedenen Plattformen (vor allem Linux und Windows) zu arbeiten. Ich bin auf einige Lösungen wie die Boost C++ - Bibliothek, das Qt-Toolkit usw. gestoßen, mit denen Programme geschrieben werden können, die auf beiden Plattformen kompiliert werden.C++ API für multiplatform Entwicklung

Ich möchte von der Gemeinschaft wissen, welche Art von Bibliothek Sie verwenden würden und wenn jemand von Ihnen Erfahrung mit dieser Art von Multi-Plattform-Programmierung hatte.

Antwort

4

Es hängt davon ab, was Sie tun werden. Wenn Sie ein striktes Befehlszeilenprogramm zum Verarbeiten von Text schreiben müssen, ist Qt oder wxWidgets möglicherweise ungeeignet. Was genau ist Ihr Anwendungsgebiet?

Scientific Computing ist mein Fachgebiet. in denen diese große Multi-Plattform-APIs:

Parallel Programming

Numerical Algorithms

High-Performance-Datei I/O

Visualisierung

+0

Danke für Ihre Liste. – sul4bh

2

Sie geben keinen partuclar Typ der Bibliothek, aber wenn Sie nur eine allgemeine Empfehlung möchte ich muss sagen, WxWidgets eine ausgezeichnete Cross-Plattform-GUI-Bibliothek ist.

Es hat einige großartige Funktionen wie das Rendern der GUI im nativen Look and Feel des Betriebssystems, auf dem es läuft, und ist nicht besonders schwer zu erlernen. Es bietet eine einzige API für das Schreiben von GUI über Win/Mac/Linux und andere wie WinCE.

Ich empfehle es für Cross-Plattform-GUI-Arbeit.

Check it out bei http://www.wxwidgets.org/

+0

+1 Look and Feel sind wichtig und werden oft von GUI Toolkits übersehen. –

2

Ich empfehle Qt sehr, wenn Sie jede Art von GUI Arbeit tun; Es ist sogar sehr nützlich, wenn Sie es nicht sind, da es auch gut durchdachte Netzwerk-/Datenbank-/Container-/etc-APIs hat. Es ist eine sehr gut gestaltete API und sehr einfach zu bedienen.

16

Verwenden Sie Qt und BOOST C++ Libraries. Sie sind beide frei und von sehr hoher Qualität. Außerdem fand ich Qt für mich persönlich viel einfacher, einfacher zu lernen und einfacher als wxWidgets.

+0

In der Tat. Ich habe wxWidgets versucht, und es ist sehr hässlich :( – GManNickG

+0

+1. Ich habe von WxWidgets zu Qt auch gewechselt. –

+0

+1. Qt ist hervorragend. – Rob

2

Der Kern-C++ - Standard und die STL sind schon ziemlich plattformübergreifend. Es ist in der Regel nur die GUI-und Hardware-Zugriffe, die Bibliotheken benötigt.

Ich habe GTK + als GUI-Toolkit verwendet und es ist auch ziemlich gut, obwohl Sie glib und einige andere Sachen auf Windows installieren müssen.

RtAudio eignet sich für plattformübergreifende Audio-E/A.

Die Low-Level-Networking/Sockets Zeug ist weitgehend identisch zwischen Windows und Linux, könnten Sie eine sehr leichte Schicht selbst schreiben, um Unterschiede zu behandeln. Ich habe keine Erfahrung mit Netzwerkbibliotheken auf höherer Ebene.

Ich mag auch die SFML (einfache schnelle Medienbibliothek) für plattformübergreifende 2D-Grafik-Art Zeug. Es ist wirklich sehr nett.


Ich möchte jedoch vorschlagen, dass, wenn Sie nur c Lernen ++ dann sind Sie wahrscheinlich besser dran nicht bei Boost-Suche (oder in der Tat diesen Toolkits alle), bis Sie Ihren Kopf haben um die Grundlagen - indem Sie zum Beispiel ein paar grundlegende Konsolenanwendungen schreiben.

Wenn Sie c lernen wollen ++ nur so Sie Multi-Plattform- dev tun können, bewusst sein, dass es viele andere Sprachen und zugehörigen Toolkits sind die besser geeignet sein kann, abhängig von der Anwendung, die Sie gerade schreiben.

Ohne zu wissen, welche Art von App Sie entwickeln möchten, ist es schwer zu sagen, ob C++ (oder C oder Python oder was auch immer) die beste Idee ist. Persönlich wende ich mich generell an Python + PyGTK für Crossplatform-GUI-Apps und C# für Windows-Apps. Sie können C/C++ immer anschließen, um Komponenten zu ersetzen, die zu langsam ausgeführt werden.

+0

Ich habe gerade erst begonnen, C++ zu lernen. Mein Ziel ist es zu können um Multi-Plattform-App zu schreiben.Ich versuche nur herauszufinden, welche Tools verfügbar sind und wie die Leute das machen. Vielen Dank. – sul4bh

1

Wie andere Poster erwähnt haben, würde ich Qt und Boost für Cross-Plattform-Entwicklung empfehlen. Ich hatte gtkmm versucht, das ist eine dünne C++ - Wrapper um GTK +, aber war nicht damit zufrieden, teilweise weil es keine native C++ - Bibliothek und Dokumentation ist schlecht im Vergleich zu Qt. Abgesehen davon, kommt Qt mit einer sehr schönen Entwicklungsumgebung, einschließlich einem leicht zu schreibenden make alternative qmake und einem GUI-Designer.

1

Ich für einige Cross-Plattform-Entwicklung in C++ zu tun und Sie nicht möchten, dass verschiedene Build-Systeme (Makefiles, Visual Studio-Projekte, etc) gibt es mehrere Tools da draußen, die Ihnen helfen können.

Die, die ich persönlich verwende, ist CMake. Es unterstützt Linux und Unix Flavors, Windows und Mac/OS. Tatsächlich verwenden mehrere Open-Source-Projekte, wie KDE, es. Aber es gibt andere Optionen wie zum Beispiel Scons.

1

Standard-C++ - Programme werden kompiliert und sind portabel, d. H. Arbeiten auf einer großen Bandbreite von Plattformen. Um sicher zu sein, dass Sie den Code sauber halten, ist Ihre beste Wette, ein paar verschiedene Compiler zu bekommen und Ihren Code mit allen zu überprüfen, während Sie volle Standardkonformität (mit Optionen wie -std= für g++, zum Beispiel) durchsetzen und ohne Warnung schreiben Code (mit Optionen wie -W -Wall -Werror für g++, die Fehler anstelle von Warnungen ausgibt). Die genaue Wahl der Compiler ist bis zu Ihnen, aber wenn man meist noch lernen, ich Rat mit:

  • g++ (kostenlos, Open Source)
  • die Intel-Compiler (kostenlos für nicht-kommerzielle Verwendung auf Linux)
  • vielleicht MSVC++

auch, wenn Sie wirklich Compiler- oder zielspezifischen Code in Ihren Projekten verwenden müssen, sollten Sie zu abstrahieren es so alles an einem Ort versammelt ist, und von dem Rest des Codes versteckt .

Nun, wenn Sie mehr als die STL verwenden möchten, müssen Sie Ihre Bibliotheken auswählen, indem Sie den Bereich der Compiler und Plattformen berücksichtigen, gegen die sie getestet wurden (und wenn die Dokumentation dies nicht angibt) schlechtes Omen). Die detaillierte Auswahl hängt davon ab, was genau Sie tun möchten, aber Boost (als robuste, umfangreiche Bibliothek für viele gängige Probleme) und Qt (eine aktuelle Version für die GUI-Programmierung) sind eine gute Wahl. Für die numerische, wissenschaftliche Programmierung werden BLAS/LAPACK (und/oder ihre parallelen Versionen, BLACS und Scalapack) sehr häufig verwendet, direkt oder über Wrapper-C++ - Klassen, wie sie in Boost (für BLAS) zu finden sind; Oft wird auch eine gute FFT-Bibliothek benötigt (FFTW ist gut, wenn seine GPL-Lizenz keine Belastung für Sie darstellt).