9

私は、Mono for AndroidとMonoTouchを使用して、所有している多数のC++ネイティブライブラリを利用できるモバイルアプリケーションを構築することに興味があります。メソッドを呼び出す方法や、iOSまたはAndroidの最終的なモバイルアプリにコードを組み込む方法について、具体的な手順を教えてもらえますか?

私はXamarinのドキュメントをオンラインで見ましたが、モバイルアプリ(Android用のMonoMonoTouch)のプログラミングに不慣れな人としてはかなりわかりにくいです。Visual Studioでmonodroidアプリを構築する場合(これは私が最もよく知っていることです)、MonoDroidプログラムからネイティブ関数を呼び出すために必要な特定の手順は何ですか。Cライブラリの場合、.DLL(動的)または.LIB(静的)形式のいずれかでコンパイルできます。また、ダイナミックライブラリはモバイルアプリには使用できないという印象を受けています。

4

4 に答える 4

9

理論的には、P /Invokesを使用してC++ライブラリをバインドすることは可能ですが、これは特に優れた方法ではありません(非常に理解しにくく、コンパイラ/ OS間で変更される可能性が高いマングルされた関数名にバインドするため)。

C ++ライブラリにアクセスするための推奨される方法は、C APIを作成し、P / Invokeを使用することです(Web上でP / Invokingを実行する方法に関する多くの情報を見つけることができます。ここから、開始する場所が1つあります:http:// mono- project.com/Dllimport)。

また、MonoTouchの場合、ダイナミックライブラリを使用することはできません(これはAppleの制限です)。静的ライブラリを使用する必要があります。Android用Monoにこのような制限があるかどうかはわかりません。

于 2012-04-13T21:17:54.030 に答える
5

最良の選択は、Swigを使用して、C#からアクセスできるC++ライブラリのバインディングを作成することです。

説明は次のとおりです。

http://www.swig.org/Doc1.3/CSharp.html

于 2012-04-20T21:50:58.603 に答える
3

Cxxiはモノタッチでは動作しません。先週この同じ問題に遭遇したとき、モノタッチでSWIGを機能させる方法についてブログを書きました。

http://blog.reblochon.org/2013/01/c-bindings-for-monotouch-using-swig.html

于 2013-01-24T11:42:34.157 に答える
2

Miguelからのこのブログ投稿は、このトピックに関する興味深い読み物です。

CXXI:C ++とC#の世界をつなぐ。

今回CXXIが利用可能かどうかはわかりませんが、これは監視とサポートを行うプロジェクトです。

于 2012-04-14T01:55:14.533 に答える