2

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 専用モードで読み込めませんでした。

これまでに行ったことは次のとおりです。

  1. 次のように mtouch を実行します。

    /Developer/MonoTouch/usr/bin/mtouch --xcode=dummy --fat DummyLib.dll
    

    注: これは、ドキュメントに記載されているように main.m ファイルを生成しませんでした。

  2. 結果の DummyLib.dll、mscorlib.dll、および DummyLib.dll.7.s ファイルを xcode プロジェクトにコピーしました。

  3. 私のxcodeプロジェクト構成の「ヘッダー検索パス」行に次の行を追加しました

    /Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/include
    
  4. 私のxcodeプロジェクト構成の「その他のCフラグ」行に次の行を追加しました

    -D_THREAD_SAFE
    -DNS_BLOCK_ASSERTIONS=1 -D_THREAD_SAFE
    
  5. 私のxcodeプロジェクト構成の「Other Linker Flags」行に次の行を追加しました

    -L/Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/lib -lmono-2.0 -lpthread -liconv
    
  6. 私のxcodeプロジェクトをコンパイルして実行します。

他の人がこれが機能していると主張しているので、私は何か間違ったことをしているに違いないか、どこかでステップを逃したと確信しています。私が間違ったことを誰かが知っていますか?

4

0 に答える 0