Xamarin Objective C привязка: .a в .a, родная связь не удалась

1

Я пытаюсь связать библиотеку Objective C в проекте Xamarin. В первый раз я делаю это и не зная много Objective C, это настоящий головной скребок.

Я сражался с Objective Sharpie и смог получить проект, который компилируется и кажется одобренным. Я раскрываю как можно меньше библиотеки, чтобы иметь что-то, что работает, но при попытке отладки на устройстве (это не i386 в любом случае, это lib для внешнего аксессуара). Я получаю следующую ошибку компоновщика:

Error MT5211: Native linking failed, undefined Objective-C class:
_OBJC_CLASS_$_ICAdministration. If '_OBJC_CLASS_$_ICAdministration'
is a protocol from a third-party binding, please check that it
has the [Protocol] attribute in its api definition file, otherwise verify
that all the necessary frameworks have been referenced and native libraries
are properly linked in. (MT5211)

Класс ICAdministration является частью библиотеки в библиотеке. Он используется моим основным интерфейсом, который я связываю, но я не связываю никаких свойств или методов, которые используют ICAdministration. Я видел некоторые ошибки в отношении Xamarin 7.2 и попытался добавить параметр --registrar:legacy mtouch, без везения.

Похоже, что существует множество флагов или вариантов командной строки, которые можно использовать для всех видов вещей, но это действительно не мой дерн. Мне никогда не приходилось иметь дело с компоновщиком раньше, поэтому, естественно, мир С является темным и страшным местом.

Любые указатели будут очень благодарны. Должен ли я привязывать всю библиотеку, которую я использую, или это просто ОК, чтобы связать то, что мне нужно? Есть ли какие-то подводные камни, о которых я должен знать? Неправильное связывание свойств/классов вызовет проблемы, если они не будут использоваться? Есть ли проблемы с вложенными библиотеками?

EDIT: Возможно, вам захочется узнать, что внешняя Objective C lib построена для iOS 7.1 SDK (ничего больше нет), а исходная библиотека, которую она обертывает, скорее всего подходит для iOS 5.

  • 0
    Можете ли вы показать заголовок Objective C для декларации ICAdministration? Также обратите внимание, что если одна библиотека Objective C требует другой, обе должны быть добавлены в проект привязки.
  • 0
    Да, все библиотеки включены. Это также проверено с Objective C-проектом в XCode и работает отлично. Это закрытая библиотека, так что не уверен, законно ли мне публиковать .h?
Показать ещё 1 комментарий
Теги:
linker
xamarin.ios

1 ответ

3

Вы пытались добавить [ProtocolAttribute] к интерфейсу ICAdministration в проекте привязки?

[BaseType (typeof (NSObject))]
[Protocol]
[Model]
Interface ICAdministration {}
  • 0
    Спасибо, что решил это для меня

Ещё вопросы

Сообщество Overcoder
Наверх
Меню