Вложение Моно на 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.
Наслаждайтесь:)