8

既存の C++ ライブラリを iPhone アプリケーションに統合できますか?

4

3 に答える 3

4

Objective-C で C++ クラスを混在させることはできませんが、iPhone でもサポートされていると思われる Objective-C++ と混在させることはできます。C++ コードを iPhone アプリに統合することは問題ではありませんが、安全を確保したい場合は、コードをライブラリとしてビルドし、iPhone アプリからリンクする必要があります。そうすれば、Obj-C コードと C++ クラスの混在について心配する必要がなくなります。

Apple の承認に関しては、Apple はプロセス全体についてかなり閉鎖的であるため、アプリをストアに含める資格があるかどうかについて、誰もあなたに決定的な答えを与えることはできません. ただし、特定の種類のアプリケーションがうまくいかないことは明らかです。すなわち:

  • Apple が好まない方法で iPhone SDK を「悪用」またはねじ曲げるアプリ。IE、デバイスの明るさの設定
  • 帯域幅またはシステム リソースの使用量が多すぎる (バッテリ寿命が不必要に消耗する)
  • Apple の機能をどこかに複製する (つまり、メール クライアント、Web ブラウザなどを作成する)
  • 価格帯とスキームの悪用

実際には、禁止されたアプリの例をグーグルで検索して、それをよりよく理解することをお勧めします. しかし肝心なのは、アプリが何かを行う方法ではなく、アプリがをしているかが禁止につながるということです。

于 2008-11-21T14:38:40.033 に答える
3

Objective C++ は、Apple の gcc によって明確に定義され、サポートされています。

しかし、C++ と目的の C クラスを混在させることはできません。C++ と Objective C を深刻な程度まで混合しているプロジェクトは、世の中にあまりないと思います。

これはライブラリに大きく依存しますが、(現実的に) 実行可能であれば、すべての実際の機能に extern "C" エントリポイントを使用して C ライブラリ内に C++ をラップし、iPhone アプリの目的の C コード内からリンクします。

于 2008-11-21T13:07:03.743 に答える
2

iPhone の開発を始めたばかりですが、既存の C++ ライブラリを変更せずにうまく使用することができました。iPhone の gl ライブラリはすべて C であり、Obj-C ではないため、既に作成したいくつかの OpenGL クラスを持ち込んで問題なく動作します。たとえば、Obj-C を使用して GLubyte 配列にテクスチャをロードしてリソースやサイズなどを取得し、それらの値を C++ コードに渡します。C++ コードは gl 呼び出しを実行してテクスチャを作成します。同じことがジオメトリのロードにも当てはまります。

.m ファイルを .mm に変更するだけで、すべてが機能するように見えます。目的の C++ クラスは、C++ クラスであるメンバーを持つことができます (ただし、他の方法が適用されるとは思いませんが、これは問題になる可能性があります)。

于 2009-06-04T21:22:13.423 に答える