2

我正在寻找一些关于在 iPhone 上从 Objective-C 调用 C# 方法的建议。我已经阅读了http://www.mono-project.com/Embedding_Mono上的说明以及许多 stackoverflow 线程,但我仍然遇到问题。我可以让一切都在模拟器上工作,但不能在设备上工作。起初,调用mono_jit_init()失败,其中一个蹦床函数中的断言。最终我发现在调用之前我必须执行以下操作mono_jit_init()

const char *path = [[[NSBundle mainBundle] bundlePath] UTF8String];
setenv("MONO_PATH", path, 1);
mono_jit_set_aot_only(YES);

不幸的是,现在我收到以下错误:

无法在仅 aot 模式下加载 AOT 模块“/private/var/mobile/Applications/DD55C2F7-A692-4E68-B4DB-927690F9F3F2/DummyTest.app/mscorlib.dll.dylib”。

这是我到目前为止所做的:

  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 项目配置中的“其他链接器标志”行

    -L/Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/lib -lmono-2.0 -lpthread -liconv
    
  6. 编译并运行我的 xcode 项目。

我确定我一定做错了什么,或者我在某个地方错过了一步,因为其他人声称可以这样做。有人知道我做错了什么吗?

4

0 回答 0