Вложение Моно на iOS

Я хочу встроить моно в мое приложение iOS. Я не хочу использовать MonoTouch. Я хочу встроить моно вручную следующим образом:

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

Я сделал это успешно в окнах, используя приведенное выше руководство и различные онлайн-примеры, здесь хороший 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 для iOS, поэтому в моем коде на C я могу просто связать и включить?

Может ли кто-нибудь предоставить и пример того, как скомпилировать моно для iOS ARM-процессоров?

MonoTouch предоставляет отличную оболочку для всех API-интерфейсов iOS Objective C, однако вам не обязательно нужно все это, поскольку я понимаю, что должно быть возможно компилировать, а затем вставлять моно самостоятельно, а затем использовать pInvoke для вызова нескольких которые вам понадобятся.

Любая помощь будет принята с благодарностью, ty!

Ответы

Ответ 1

В то время как не совсем то, о чем вы просите, iOS 7 добавила поддержку скриптов с помощью JavaScript. Многие люди, которые находят этот пост, могут захотеть использовать эту новую возможность для достижения того, что вы пытаетесь сделать. Ссылка

Ответ 2

Как сказал Рольф, сначала необходимо прочитать Моно-лицензионный документ. Вложение моно на iOS требует специального разрешения от Xamarin.

Вам нужно изменить несколько настроек сборки из XCode, и вот что я сделал.

  • Открыть (или Создать) проект iOS
  • Добавьте libmonoboehm-2.0.a в свой проект (вы можете использовать другую версию файла .a)
    • В папке Library/Frameworks/Mono.framework/Versions/{version}/lib
  • Проект → Настройки сборки → Поиск заголовков
    • Добавить путь: /Library/Frameworks/Mono.frameworks/Versions/{version}/include/mono-2.0
  • Проект → Настройки сборки → Поиск в библиотеке
    • Добавить путь: /Library/Frameworks/Mono.frameworks/Versions/{version}/lib

И код, подобный этому в приложении 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 :)

Пожалуйста, помните. Вам нужно получить лицензию от Xamarin при встраивании моно на iOS.

Наслаждайтесь:)