2011-01-27 5 views
1

私はお金を節約し、WindowsとMac OSの両方で動作するデスクトップアプリケーションを開発しようとしています。これは可能ですか?私たちはC++でそれをやってもいいですか?いくつかの修正と修正を加えて、両方のOSで同じアプリケーションを再利用していますか?WindowsとMac OSの両方で動作するデスクトップアプリケーションをC++で開発できますか?

+4

これがツールのようなコマンドのようなものでない限り、それは、全体的に、悪い考えである*。 JavaやQtなどを使用して「ポータブル」アプリケーションを作成しようとすると、通常、MacアプリケーションやWindowsアプリケーションのように見えない怪物になります。基本的にはハッキーな感じがします。 –

+0

@ウィリアム、私はMacについては知らないけど、Windows/Linuxでやってみたところ、両方のシステムでうまく動作していた。ああ、そしてHP-UXでも。これはQtとJavaの両方に当てはまります。 Macは違うの? –

+1

指定された目標(お金を節約する)が与えられれば、UIの非存在性は許容可能な妥協案となる可能性があります。さらに、フォームの経験私はQtが(ポータブル)機能が動作すると、後でネイティブのポリッシュを追加できることを知っています。 – MSalters

答えて

4

Qt

またはあなたはそれをgoogleすることができます。

+0

決定的な答え。また、Linuxを含む多くのUnixで動作することにも言及する価値があります。 –

+0

+1のQt。 C++でマルチプラットフォームのGUIアプリケーションが必要な場合は、その方法があります。 – jv42

+3

Qtはいいですが、これは質問に対する良い答えではありませんでした。ちょうど同様に "はい、googleそれを行ってもいい!"または "RTFM"。私の+1を詳しく教えてください。 :) –

6

はいこれが可能です。オペレーティングシステムに違いがあるため、一部のコードが異なる場合があります。 http://qt.nokia.com/
Qtは、テーブルにはるかにクロスプラットフォームの機能をもたらしていることは注目に値するので、それに慣れる:

  • あなたは、このようなQtのようなGUIのための共通ライブラリを使用する必要があります。
    • ファイルのパスとして扱うためにいくつかの違いがあります(C:マック、\上に存在しないと/パスセパレータ、などです)
    • ファイルの語尾は、Windows、Lfの中(CRLFを異なります
  • )は、Macに次の2つの異なるターゲットCPUのにコンパイルする必要があります。ほとんどのC++コンパイラはこれを行うことができます。
  • 同じコードが両方に使用することができ、あなただけのこと(またはできない)する領域を定義するコンパイラがターゲットとしている一般OSものに応じて含まれています。

Googleのクロスオーバー開発ガイドでは、これまでに人々のルーツがこれを行っています。 :)

Javaと、Mono Project(.Net、Qt)の両方で、あなたに関連するスキルが限られているクロスプラットフォームアプリケーションを作成することができます。基礎となるプラットフォーム。彼らは一般的に、時間の節約と考えられているより高いレベルの言語です(それは別の議論である。)

+0

Qtはパス区切りと行末を処理します。さらに、標準のCおよびC++ライブラリでも行末を処理します。 –

2

私のコメントに拡大:

はないを行います。

は++ポータブルCであなたのライブラリのコードを記述します。可能な限りライブラリの機能を入れて、プラットフォーム固有のAPI(おそらくCocoaと.NET)を勉強していることを確認してください。そうすれば、ライブラリへのインターフェイスは少なくともどちらかに適しています。その後

ネイティブバイナリで、あなたのライブラリーを包みます。アプリケーションが各プラットフォームでどのように見えるのか、それらの感触に注意を払うことができます。

X11アプリケーションのように見えるアプリケーションをビルドし、Gnomeアプリケーション、KDEアプリケーション、OS Xアプリケーション、およびWindowsアプリケーション間のすべての方法ですべてを行います。はユーザーエクスペリエンスを損なうでしょう。

ひどくです。

+0

.Netは標準のWindows APIではありません。 Windows APIは、C、COM、.Net、WMIの組み合わせとして最もよく記述されています。それから私はおそらくまだいくつかの部分を忘れているでしょう。 C++は最初の3つと合理的に互換性があります。 – MSalters

+0

@MSalters:「Windows API」は、ほぼ普遍的にCヘッダファイルとライブラリのセットとみなされています。私がよく知っている解釈の下では、.NETとWMIが含まれています。 Windows APIをターゲットにする場合は、C++開発に限られません。これは、Visual Basic、.NETプラットフォーム、Python(いくつか例を挙げれば)と同様に、CおよびC++と同様に機能します。私はあなたが「C++は最初の3つと合理的に互換性がある」と言ったときに、あなたが何を意味するのか分かりません。 Windows APIをターゲットとするC++アプリケーションとの互換性の問題はありますか? –

0

ここに遅れて来ます!

私は、クロスプラットフォームの商用アプリケーション(現時点ではOS/XとWindows、おそらくはLinuxまたはiOSと思われる)の最終段階に入っています。

私たちは、Juceと呼ばれるオープンソースのクロスプラットフォームのC++開発ライブラリを使用しています。十分に話すことはできません。これは完全に機能しており、コードは堅実で高品質で、同じコードベースからWindows、OS/X、Linux、iOS、Android用に構築することができます(最初の2つを試しただけですが、明らかに他のプラットフォームの成功を報告している)。

特に有益な点は、主任開発者が掲示板で非常にアクティブであり、トラブル報告に非常に敏感であることです。

また、GPLの下でライブラリのライセンスを取得することができます。また、非常に合理的な価格の商用ライセンスもあります。

Juceは、デジタルオーディオアプリケーションを扱う人々の間で非常に人気があります。実際、私の知る限りでは、多くの、あるいはおそらくほとんどのトップ商用デジタルオーディオアプリケーションがこのシステムを使用していますが、非常にフル機能で非常に高速です。任意のクロスプラットフォーム開発アプリケーションのトップ候補です。

関連する問題