iPhone で Objective-C から C# メソッドを呼び出す際のアドバイスを探しています。http://www.mono-project.com/Embedding_Monoの手順と多数の stackoverflow スレッドを読みましたが、まだ問題があります。シミュレーターではすべてを動作させることができますが、デバイスでは動作しません。最初に、への呼び出しmono_jit_init()
はトランポリン関数の 1 つでのアサーションで失敗しました。最終的に、呼び出す前に次のことを行う必要があることがわかりましたmono_jit_init()
。
const char *path = [[[NSBundle mainBundle] bundlePath] UTF8String];
setenv("MONO_PATH", path, 1);
mono_jit_set_aot_only(YES);
残念ながら、次のエラーが表示されます。
AOT モジュール '/private/var/mobile/Applications/DD55C2F7-A692-4E68-B4DB-927690F9F3F2/DummyTest.app/mscorlib.dll.dylib' を aot 専用モードで読み込めませんでした。
これまでに行ったことは次のとおりです。
次のように mtouch を実行します。
/Developer/MonoTouch/usr/bin/mtouch --xcode=dummy --fat DummyLib.dll
注: これは、ドキュメントに記載されているように main.m ファイルを生成しませんでした。
結果の DummyLib.dll、mscorlib.dll、および DummyLib.dll.7.s ファイルを xcode プロジェクトにコピーしました。
私のxcodeプロジェクト構成の「ヘッダー検索パス」行に次の行を追加しました
/Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/include
私のxcodeプロジェクト構成の「その他のCフラグ」行に次の行を追加しました
-D_THREAD_SAFE -DNS_BLOCK_ASSERTIONS=1 -D_THREAD_SAFE
私のxcodeプロジェクト構成の「Other Linker Flags」行に次の行を追加しました
-L/Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/lib -lmono-2.0 -lpthread -liconv
私のxcodeプロジェクトをコンパイルして実行します。
他の人がこれが機能していると主張しているので、私は何か間違ったことをしているに違いないか、どこかでステップを逃したと確信しています。私が間違ったことを誰かが知っていますか?