2009-05-14 3 views
8

私は開発者のチームで働いています。私たちの一人はWindowsで具体的に働いています。私は主にMac OS Xで作業しています。CベースのアプリケーションをC++ Objective-Cを使っていますが、クロスプラットフォーム開発プロジェクトにどのように取り組むかについてはあまり知識がありません。クロスプラットフォームObjective-C/C++の開発

Mac OS Xを使用してC++で動作することは可能ですか?明らかにObjective-Cに対応していますが、C++のサポートだけでもあります。これらの言語のクロスプラットフォーム開発はどうですか?私は、ブーストやUIライブラリのようなものを使用したいと思います。

誰もが複数のプラットフォーム用に開発した経験がありますが、アプリケーションがVMを必要とせずにネイティブで実行できるようにしていますか?

EDIT:正しいとマークしたい多くの回答があります。 QtはC++で開発して開発する方法です。これは、* nix、OS X、Windowsのためのものである可能性がありますので、私たちの個人的な選択肢としては最適です。私がObjective-Cを書くのを避けることができれば、チームはC++に固執します。 Objective-CでGUIを書いてミックスして一致させなければならないのであれば、あまり気にしないでしょう。

答えて

10

You could look at Qt。私はそれをWindows、Linux、Mac OSXのプロジェクトでうまく使いました。

+0

これはおそらくもっとも単純な投稿ですが、ほとんどの意味があります。 – Kezzer

1

Mac OS Xを使用してC++で動作することは可能ですか?明らかにObjective-Cに対応していますが、C++のサポートだけでもあります。

はい、あります。

OS Xでは、C++で必要なことをすべて行うことができます。たとえば、LinuxのC++でできることは何でもできます。 gccのC++コンパイラ、C++ライブラリなどのサポートがあります。 XcodeはC++での作業をサポートしています。

Objective-C++を使ってobjective-CとC++を混在させることもできます(ただし、GUI作業では移植性がありません)。

これらの言語のクロスプラットフォーム開発についてはどうですか?私は、ブーストやUIライブラリのようなものを使用したいと思います。

私はあなたの最善の策がQTだと信じています。

クロスプラットフォーム(Windows、OSX、Linuxなど)で安定したC++ライブラリで、10年以上にわたって使用されており、多くの商用アプリケーションが書かれています(Skype、Adobe Photoshop Album )とそれで書かれたオープンソースの大量のもの(KDEデスクトップでは初心者向け)です。 GUIのもののほかに、(コンテナのクラス、XML、データベースの接続性など)多くのものを提供します。

最新のQTでオープンソースと独自の(クローズドソース)アプリを無料で開発することができ、そのライブラリは最近、巨大な多国籍企業NOKIAによって購入されました。

QTには、ライブラリとは別に、IDEとVisual Forms Designer(すべて無料)が付属しています。

OS X(wxWidgetsgtkmm、など)には、C++用の他のクロスプラットフォームGUIライブラリも存在します。

+0

Mac OS X上のwxWidgetは、ボタンやフィールドを持つ簡単なGUIを管理しますが、フル機能のアプリケーションではwxWidgetsでは非常に非Maccishです。フォントダイアログは一例です。 – dreamlax

11

私はC++、MFC、Objective-Cを使ってMac OS XとWindows用のソフトウェアを生産するソフトウェア会社で働いています。

はい、間違いなく可能です。

C++でアプリケーションの「コア」を開発した方が最適でしょう。 MVCアプリケーションでは、C++の部分がモデルになり、場合によってはコントローラになります。 GUIおよび他のOS固有のインターフェイスに接続するコードについては、Mac OS XではObjective-C、Windows XPではC#というネイティブAPIを使用する必要があります。

Macの良い点は、C++とObjective-Cを一緒にコンパイルできることです。 C++とObjective-Cが同じコンパイル単位でコンパイルされているObjective-C++を使用することもできます。残念ながら、C#でこれを行うことはできません(Managed C++と呼ばれるものが別の獣です)。

QtやwxWidgetsなどのクロスプラットフォームのフレームワークは避けたいと思います。どちらも、クロスプラットフォームアプリケーションを開発することを可能にしますが、そのようなアプリケーションのルック&フィールはサブアドレスです。私はwxWidgetsにもっと精通していますが、その設計はアプリケーション設計のWindows MFCパラダイムに重点を置いています。

編集2009年5月14日、9:44 EST: Qtは今、ネイティブプラットフォームのルックアンドフィールを許可している場合、それは良い選択肢である可能性があります。私は最新の製品を見ていないので、自分で設計する前にそのフレームワークを見たいかもしれません。その決定は、アプリケーションの結果と、Qtが必要とする設計パラダイムがどれくらい快適であるかを調べた後に行う必要があります。

+2

実際、QtはCocoaと統合できるようになりました。そのため、ルック・アンド・フィールは全く同じになる可能性があります。 – Hejazzman

+0

私たちは基本的に同じページにあります;-) –

+0

偉大な心は似ていると思いますか? Loミスモ? :) –

4

私が使用しているのは、CまたはC++で書かれた共通ライブラリであり、アプリケーションのすべてのコア機能があります。

ソリティアゲームを構築しているとします。したがって、純粋なC++(主にプラットフォームに依存しない)ライブラリにコアクラスがあります。その後CoreSolitaire

  • 、あなたは、あなたがあなたのソリティア展開するプラットフォームごとに1つの別個のUIプロジェクトを持っています:

    • iSolitaire(のObjective-Cを、マルチタッチココアのために基づいて、 iPhoneOS)
    • MacSolitaire(Objective-C、Mac OS X用のココア)
    • WinSolitaire(C++、Win32またはC#for Windows plafオームズ)
    • LINUX/UNIX用のベースGSolitaire(C++、GNOME/GTK)

    は、それはより多くの仕事だが、私の意見では、得られた製品は、間違いなくあなたは、プラットフォームに依存しないを使用することによって得ることができるものよりも優れていますウィジェットはQTまたはwxWidgetsのように設定します。

    これは、デプロイメント環境を完全に管理している企業で製品を内部的にデプロイする場合、結果の製品がさまざまなプラットフォームでどのように動作するか気にする必要はありません間違いなくすべてのもの(QT、wxWidgets、またはあなたが遭遇するかもしれない他のもの)に共通のAPIを使用することができます。

+1

実際、QTはWindowsとLinux(KDEまたはGNOMEテーマのサポート)に完全にネイティブです。また、Cocoa-QTとの統合により、QTを使用してMac用のCocoa GUIを使用することもできます。 3種類のUIツールキットを使用してビートします。 – Hejazzman

0

は、誰もがまだ アプリケーションはVMを必要とせずにネイティブに を実行できるように複数のプラットフォーム向けの開発 のいずれかの経験を持っていますか?

ややこしい。すべてのプラットフォーム固有のコードを囲むようにしてください。 あなたはメインアプリケーションまたはライブラリであるため、プラットフォーム固有のコードを参照する必要はありません。そうすれば、別のプラットフォームに移植するときにもっと簡単になるはずです。

関連する問題