在iOS上嵌入Mono

时间:2013-01-24 18:01:15

标签: ios xamarin.ios mono xamarin

我想将mono嵌入到我的iOS应用程序中。我不想使用MonoTouch。我想像这样手动嵌入单声道:

http://www.mono-project.com/Embedding_Mono

我已经在Windows上成功完成了这项工作,使用上面的指南和各种在线示例,这是一个很好的Windows版本:

https://github.com/inkdev/Embedded-Mono-Sample

然而,我在iOS上开始时遇到了麻烦。我知道可以做到,像Unity3d这样的公司使用它来支持他们的游戏引擎技术。我无法弄清楚如何为iOS编译和链接单声道,也无法找到任何好的指令。我没有找到任何使用搜索引擎的帮助,他们似乎只是出现了关于MonoTouch的文章(Xamarin自己的商业包装器,将单声道嵌入到iOS中)。

以下是一些值得注意的链接:

http://www.mono-project.com/Mono:ARM

http://web.archive.org/web/20090106023130/http://mono-project.com./Mono:Iphone

在某些地方我可以获得Mono for iOS的预编译库和标题,所以在我的C代码中我可以简单地链接和包含?

有人可以提供如何为iOS ARM CPU编译单声道的示例吗?

MonoTouch为所有iOS Objective C API提供了一个很好的包装器,但是你不一定需要所有这些,因为据我所知它应该可以编译然后自己嵌入mono然后使用pInvoke来调用少数几个你需要的原生功能。

非常感谢任何帮助,ty!

2 个答案:

答案 0 :(得分:1)

虽然不完全符合您的要求,但iOS 7增加了对使用JavaScript编写脚本的支持。很多人发现这篇文章可能想要使用这种新功能来实现你的目标。 Link

答案 1 :(得分:0)

正如罗尔夫所说,你需要先阅读Mono Licensing document。在iOS上嵌入mono需要得到Xamarin的特别许可。

您需要从XCode更改多个构建设置,这就是我所做的。

  1. 打开(或创建)iOS项目
  2. libmonoboehm-2.0.a添加到您的项目中(您可以使用.a文件的其他版本)
    1. 它位于Library/Frameworks/Mono.framework/Versions/{version}/lib文件夹
  3. 项目 - >构建设置 - >标题搜索
    1. 添加路径:/Library/Frameworks/Mono.frameworks/Versions/{version}/include/mono-2.0
  4. 项目 - >构建设置 - >图书馆搜索
    1. 添加路径:/Library/Frameworks/Mono.frameworks/Versions/{version}/lib
  5. 并且,在iOS应用程序中使用此类代码

        #include <mono/jit/jit.h>
        #include <mono/metadata/mono-config.h>
        #include <mono/metadata/assembly.h>
        #include <mono/metadata/environment.h>
    
    // ....
    
        const char* dllFile = "ABSOLUTE_PATH_TO_DLL_OR_EXE";
        domain = mono_jit_init(dllFile);
        mAssembly = mono_domain_assembly_open(domain, dllFile);
    // ... Do whatever you want :)
    

    请记住。在iOS上嵌入mono时,您需要从Xamarin获得许可。

    享受:)