我正在寻找一些关于在 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”。
这是我到目前为止所做的:
运行 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 项目配置中的“其他链接器标志”行
-L/Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/lib -lmono-2.0 -lpthread -liconv
编译并运行我的 xcode 项目。
我确定我一定做错了什么,或者我在某个地方错过了一步,因为其他人声称可以这样做。有人知道我做错了什么吗?