2009-07-31 8 views
4

私は、さまざまなプラットフォーム(主に、LinuxとWindows)上で動作するようにC++を勉強したいです。 Boost C++ライブラリ、Qtツールキットなどのようないくつかのソリューションは、両方のプラットフォームでコンパイルされるプログラムの作成に使用できます。C++ API

私はあなたのいずれかが前にマルチプラットフォームのプログラミングのこのタイプの経験があった場合に使用するために参照しますライブラリの種類、地域社会から知りたいです。

答えて

4

それはあなたがやろうとしているかに依存します。あなたがテキストを処理するために厳密なコマンドラインユーティリティを記述する必要がある場合は、QtまたはwxWidgetsは不適切かもしれません。あなたのアプリケーション分野は何ですか?

サイエンティフィック・コンピューティングは、専門知識の私のフィールドです。ここで、これらは優れたマルチプラットフォームのAPIである:(Boost's C++ wrappers for BLAS経由)

並列プログラミング

数値アルゴリズム

高性能ファイルI/O

可視化は

  • Visualization Toolkit
    • あなたはすなわち作業をやっている場合は、GUIは素晴らしいことができます。以下のマルチプラットフォームのAPIのいずれかを試してください。
  • 平行すなわちアプリケーションのプラグイン・フレームワーク:
+0

ありがとうございます。 – sul4bh

2

あなたは、ライブラリの任意のpartuclarのタイプを指定していないが、あなただけの一般的な勧告をしたい場合、私はwxWidgetsのは、優れたクロスプラットフォームのGUIライブラリであると言わざるを得ない。

これは、オペレーティングシステムのネイティブなルックアンドフィールでGUIをレンダリングするなど、いくつかの優れた機能を備えており、特に学習するのは難しくありません。それは、Win/Mac/LinuxとWinCEのようなGUI作成のための単一のAPIを提供します。

クロスプラットフォームのGUI作業に強くお勧めします。

でそれをチェックアウトhttp://www.wxwidgets.org/

+0

+1ルックアンドフィールは重要であり、GUIツールキットによって見落とされることがよくあります。 –

2

あなたはGUI作業の任意の並べ替えを行っている場合、私は非常にQtのをお勧めします。それはネットワーキング/データベース/コンテナ/ etcのAPIもよく考えられているので、あなたがいなければ非常に便利です。これは非常によく設計されたAPIで、使いやすいです。

16

QtBOOST C++ Librariesを使用してください。彼らは無料で非常に高品質です。また、少なくとも個人的に私はQtがはるかに簡単で、習得が簡単で、wxWidgetsより簡単であることを発見しました。

+0

確かに。私はwxWidgetsを試しましたが、それは非常に醜いです:( – GManNickG

+0

+1 wxWidgetsからQtにも切り替えました –

+0

+1 Qtは素晴らしいです – Rob

2

コアのC++標準とSTLはすでにかなりクロスプラットフォームです。通常、ライブラリを必要とするのはGUIとハードウェアのアクセスだけです。

私はGTK +をGUIツールキットとして使用しましたが、これはかなり良いですが、あなたはglibや他のものをウィンドウにインストールする必要があります。

RtAudioは、クロスプラットフォームのオーディオI/Oに最適です。

低レベルのネットワーク/ソケットは、WindowsとLinuxの間ではほとんど同じですが、あなたは非常に軽量のレイヤーを作成して、違いを処理することができます。私は、より高いレベルのネットワーキングライブラリに関する経験はありません。

私はクロスプラットフォーム2dグラフィックスタイプのもののSFML(simple fast media library)も好きです。それは本当に素晴らしいです。


あなたの頭を持ってまで、私はあなただけ学習C++あるならば、あなたはおそらくは、ブーストを見ている(または実際にこれらのツールキットのいずれか)ではない方がいいでしょうということ、しかし、お勧めしますいくつかの基本的なコンソールアプリケーションを作成するなど、基本的なことを考えています。

マルチプラットフォームの devを実行するには、C++のみを習得したい場合は、作成するアプリに応じて、他の多くの言語や関連ツールキットが適していることに注意してください。

あなたが開発しようとしているアプリのタイプを知らなくても、C++(またはCやPythonなど)がベストアイデアかどうかは分かりません。個人的には、私はクロスプラットフォームのGUIアプリケーションではPython + PyGTKに、Windows専用アプリケーションではC#を使うのが一般的です。 C/C++をプラグインすると、実行速度が遅いコンポーネントをいつでも置き換えることができます。

+0

私は実際にC++を学び始めました。マルチプラットフォームアプリを書く。私は、どのツールが利用可能で、どのように人々がこのようなことをしているのかを知ろうとしています。ありがとう。 – sul4bh

1

他のポスターと同様に、クロスプラットフォーム開発にはQtとBoostをお勧めします。私はGTK +の周りに薄いC++ラッパーであるgtkmmを試していましたが、ネイティブのC++ライブラリではなく、ドキュメンテーションがQtに比べて劣っていたために部分的に満足できませんでした。それに加えて、Qtには、書き換えが容易で、GUIデザイナーであることなど、非常に素晴らしい開発環境が用意されています。

1

私はC++でいくつかのクロスプラットフォーム開発を行っています。異なるビルドシステム(Makefiles、Visual Studio Projectsなど)を維持したくない場合は、いくつかのツールがあります。

私が個人的に使用しているものはCMakeです。 LinuxやUnix Flavors、Windows、Mac/OSをサポートしています。実際には、KDEのようないくつかのオープンソースプロジェクトがそれを使用しています。しかし、例えばSconsのような他のオプションがあります。

1

標準のC++プログラムは、コンパイルされ、移植可能です。つまり、広範囲のプラットフォームで動作します。コードをきれいに保つためには、いくつかの異なるコンパイラを用意し、すべてのコードでコードをチェックし、標準準拠を完全に実行しながら(たとえば、の場合は-std=のオプションを使用)、警告なしで記述することですコード(g++の場合は-W -Wall -Werrorのようなオプションがあり、警告ではなくエラーが発生します)。コンパイラの正確な選択はあなた次第ですが、ほとんどが学習している場合は、私が使用してアドバイス:

  • g++(無料、オープンソース)
  • インテルコンパイラーを(Linux上の非営利目的の使用は無料)
  • 多分MSVC++

また、あなたは本当にそれがすべてのコードの残りの部分から一箇所に集まって、隠されていますので、それを抽象化することを確認し、あなたのプロジェクトにcompiler-またはターゲット固有のコードを使用する必要がある場合。

STL以上のものを使用する場合は、テスト対象のコンパイラとプラットフォームの範囲を考慮してライブラリを選択する必要があります(ドキュメントに状態が記載されていない場合は、悪い予兆)。具体的に何をしたいのかによって異なりますが、Boost(多くの一般的な問題のための堅牢で幅広いライブラリとして)とQt(GUIプログラミングの最新バージョン)が良い選択です。 BLAS/LAPACK(および/またはそれらの並列バージョン、BLACSおよびScalapack)は、Boost(BLAS用)に記載されているように、直接またはラッパーC++クラスを使用して非常に広く使用されています。良いFFTライブラリもしばしば必要です(GPLライセンスがあなたにとって負担でないなら、FFTWは良いです)。