4

今後のプロジェクトでは、WindowsおよびLinuxでコンパイルされる既存のC ++コードをMacOS(leopard)に移植する計画があります。ソフトウェアはコマンドラインアプリケーションですが、GUIフロントエンドが計画されている可能性があります。MacOSはg++コンパイラを使用します。Linuxと同じコンパイラを使用することで、問題は発生しないように見えますが、常に問題が発生します。

移植中に注意すべき推奨事項や問題はありますか?

4

4 に答える 4

8

アプリにはGUIがあり、どれが(native / Qt / Gtk +)ですか?

そうでない場合、(Linuxと比較して)注意すべき問題は主に動的リンケージ領域にあります。OS Xは「-dylib」と「-bundle」を使用し、実際には2種類のダイナミックライブラリ(ランタイムロード可能ライブラリと通常ライブラリ)があります。Linuxには1種類(-shared)しかないので、とにかくこれは緩いです。

アプリにGUIがある場合は、Objective-Cを使用して、Cocoaですべてを再コーディングする必要があります。つまり、あなたも新しい言語に入るでしょう。一部の人々(MSなど)はCarbon(C ++ API)を使用していますが、段階的に廃止されています。新しいプロジェクトにはお勧めしません。

幸運はQtまたはGtk+を使用することです。ネイティブのGtk+ポートは、ほんの数日前に(再)発表されました(Imendioを参照)。

ps OS XはもちろんX11バイナリも実行しますが、それを顧客にプッシュするのは難しいかもしれません。それらはAquaインターフェースに慣れており、それで生産的です。X11は非常に短期的な解決策にすぎないと考えてください。

pps OS Xに付属するオープンソースのアドオンライブラリの数は限られており、それらのバージョンは遅れている可能性があります。Linuxではユーザーに「libxxxvyy」のインストールを簡単に要求できますが、OS Xでは複数のパッケージングアプローチ(fink、macports)があり、商用ツールの場合、必要なライブラリがアプリケーションに含まれていることが期待されます。OS Xは、このための「アプリケーションバンドル」と「フレームワーク」を提供します(ローカルコピー、アプリケーションを自給自足にします)。Linuxにはそのような概念はありません。これは、ビルドシステムにも大きな影響を及ぼします。多分あなたはすべてのプラットフォームでSConsのようなものを試してみたいと思うでしょう?

于 2008-09-28T10:51:23.673 に答える
1

すべてを Objective-Cに再コーディングする必要はありません。Objective-C から C++ コードを使用できるようにする C++ と Objective-C の奇妙な粗悪品があるため、C++ のモデル コードと Objective-C のビュー/コントローラ コードをインテリジェントに分割できます。Objective-C を使用するには、ソース コード ファイルの末尾に .m ではなく .mm を付けるだけで、ほとんどの正当な C++ 構文と Objective-C 構文を同じ行に混在させることができます。

于 2008-10-07T14:29:22.503 に答える
0

MacOSには移植していませんが、LinuxからさまざまなUnixに移植しています。主な作業領域はインストールと起動システムであるため、ほとんどの作業をそこに置くことを期待してください(既存のものがLinux間ですでに移植可能である場合)およびWindows)。

于 2008-09-28T10:37:46.450 に答える
0

Macintosh (macosx) は、内部的には基本的に FreeBSD です (微調整されていますが)。Linux と FreeBSD では、システム プログラミングにいくつかの違いがあります。主に、これらの違いはさまざまなシステム コール間に存在します。そのため、これがどの程度影響するかは、アプリケーションが何を行っているか、および実行中にどのような種類の OS システム コールを行っているかによって決まります。

于 2008-09-28T18:15:26.243 に答える