Я хочу использовать OpenFeint в проекте MonoTouch. У меня нет опыта в создании правильных привязок для использования сторонней библиотеки Objective-C с Mono. Чтение this статья на веб-сайте Xamarin по-настоящему не помогла мне. Кто-нибудь создал привязки, необходимые для использования OpenFeint с MonoTouch, или у кого-нибудь есть опыт создания привязок, которые мне нужны?OpenFeint с MonoTouch
ответ
Очень просто.
File-> New Project> MonoTouch-> MonoTouch Связывание проекта
Первая вещь добавить библиотеку Objective-C (* .a файл), это построить вариант должен автоматически сказать Native Library
.
Добавьте все файлы заголовков, которые они предоставляют, с параметром Build None
(это только для справки, чтобы помочь вам написать привязку).
Прочитайте файлы заголовков и начать писать привязки в файле ApiDefinitions.cs:
- Использование
[BaseType(typeof(NSObject))]
, если их класс не наследуется от чего-то другого - Использование
[Export("yourMethod:")]
по методам - Обратите внимание на + и - символы в методах, + указывает статический метод, используйте
[Static]
на вашем конце, чтобы указать, что - Если вы столкнулись с классом делегата (которым нужно наследовать), добавьте
[Model]
, в противном случае он выйдет в виде закрытого класса - Если вам нужно связать другие библиотеки для компиляции, измените атрибут [LinkWith] в файле designer.cs, который отображается под библиотекой * .a
- Перечисления идут другой файл * .cs (я забыл название)
#define MyConstant 1
- константы, подобные этим, должны находиться в классе, у которого есть заголовочный файл, в котором они находятся. Определите новый * .cs-файл с классом как частичным. Вы также можете добавить дополнительный код C# в класс, если хотите.- Карта NSTypes к соответствующему типу C#: NSString -> string и т. Д.
- Не стесняйтесь переименовывать типы Obj-C, чтобы они не были такими тупыми , Я запускаю случайные префиксы для каждого метода, члена и т. Д. - удаляйте такие вещи.
- ПРОСМОТРЕТЬ ссылку, указанную в вашем ответе
- Когда все сказано и сделано, просто обратитесь к новой библиотеке (не используйте дополнительные параметры сборки в настройках проекта, вам больше не нужно этого использовать)
В общем, это хорошая идея, просто сделайте это сами, чтобы вам было удобно связывать библиотеки Obj-C, такие как босс. Это то, что я расскажу о новом прокате в моем отделе.
В дополнении к @ Джонатану отличных ответов ...
Есть несколько привязок проекты доступны на GitHub, например, от Xamarin, что может дать вам подсказки, если вы не знаете, как преобразовать некоторые объекты Objective-C в C#. Реальные примеры часто очень полезны по теории.
Если вы когда-либо заблокированы в определенном месте, то не стесняйтесь задавать конкретные вопросы, либо здесь, либо на mailing-list.
Спасибо, большое предложение! Я бы проголосовал за оба ответа, но, увы, у меня нет необходимой репутации. – Thijs
Я загрузил SDK OpenFeint и могу его построить с помощью xcode. К сожалению, на моем жестком диске нет файла * .a. Любые указатели на то, как это получить? – Thijs
Я вижу файл 'BuildUniversalBinary.sh' в процессе загрузки. Можете ли вы запустить это и посмотреть, что он делает? Я сейчас на Windows, я не могу. – jonathanpeppers
Я пытаюсь запустить файл, но он дает мне следующую ошибку: builduniversalbinary.sh: строка 6: КОНФИГУРАЦИЯ: несвязанная переменная. Я пытаюсь выяснить, как это исправить. Позвольте мне просто подтвердить, что я должен использовать файл следующим образом в терминале: «sh BuildUniversalBinary.sh» – Thijs