0

いくつかの関数の定義を含むdllを作成したいと思います。私はObjective-cとjava環境の両方で関数を使用することができます。

これを行うことさえ可能ですか?

ありがとう!

4

2 に答える 2

1

iOSおよびAndroid用のアプリケーションを作成し、アプリケーションのビジネスロジック(UIではなく)を再利用する場合は、Xamarinを参照してください。

C#で開発し、AndroidやiOSアプリを作成できます。

Xamarin Webサイトから:

iOSとAndroidの間でデータ構造と非UIコードを共有することにより、時間を節約します。

それが役に立てば幸い。

于 2012-06-07T15:12:24.933 に答える
1

CまたはC++で記述します。これをObjectiveC++の魔法を介してObjectiveC/ Cocoaにリンクし、NDKとJNIを介してAndroid上のJavaにリンクすることができます。それが私のプロジェクトで行っていることです。どちらの場合もコンパイラはGCCであり、RTLは同一ではありませんが、十分に類似しています。

インターフェイスで毛むくじゃらのデータ構造を避け、プリミティブとプリミティブ配列に固執します。そして、当然、プラットフォームの一部を抽象化する必要があります。

-fshort-wcharを使用してコードをコンパイルすることをお勧めします。shortこれは、CocoaとJNIの両方のネイティブ文字形式であるために発生します。ただし、RTLのワイド文字列関数は失われますが、Cocoa文字列やJava文字列では使用できません。または、ライブラリ/プラットフォームの境界でUTF-8を使用できます。すべての呼び出しでの変換オーバーヘッド、yaddayadda。

注:いくつかのマイナーなヘルパー関数を再利用したいだけの場合は、それらを2回記述するか、コピー/貼り付けしてから構文を調整する方が簡単です。NDKコードのデバッグは非常に注意が必要です。共有ビットがプロジェクトの25〜30%以上を構成する場合にのみ、この方法を使用してください。私の場合、それは60%が共有されているようなものです。

編集:このようにすると、他のモバイルプラットフォームへの移植は簡単になりますが、それほど多くはありません。具体的には:

  • サムスンバダ-スナップ(GCCを使用したC ++、イェーイ)
  • モバイルQt(Meegoなど)-スナップ(上記と同じ)
  • Windows Mobile 6.5以下-比較的簡単(GCCとMSVCのコンパイラの違いが邪魔になる可能性があります)
  • Windows 8タブレット(別名WinRT、Metro)-上記と同じ
  • Blackberry Playbook-理論的には可能ですが、試したことはありません
  • 古い学校のブラックベリー-不可能、それはすべてJavaです
  • Windows Phone 7-不可能、それはすべてC#/ VB.NET
于 2012-06-07T15:21:50.660 に答える