Проблема с привязкой библиотеки Objective-C к C# с помощью Objective Sharpie

Я пытаюсь пройтись по этому руководству:

https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/

пытаемся создать привязки для этого проекта github:

https://github.com/lminhtm/LMGaugeView

Использование Sharpie 3.4.

Я сталкиваюсь со следующими проблемами:

  1. Я не могу сгенерировать Fat двоичный файл с архитектурой i386 armv7 x86_64 arm64 потому что я строю против iOS11. Я могу генерировать только толстый двоичный файл с архитектурой x86_64 а также arm64при попытке других выдает сообщение об ошибке invalid iOS deployment version, iOS 10 is the max deployment target for 32-bit targets, Это ожидается?

  2. Когда я затем использую Sharpie, я могу генерировать файлы API и Struct, однако каждый из этих файлов имеет огромный размер: в структуре Struts размер 24K+, а в API 54K+. Я также следовал учебному пособию по YouTube, и он получил около 200 строк, так что тот факт, что у меня такие большие цифры, заставляет меня думать, что что-то происходит. Его учебник не был для моего проекта Objective-C, но я даже попробовал тот же, что и он, и в итоге получил тот же результат.

  3. Файл Struct имеет более 7K ошибок, и я вижу бесчисленные строки, которые выглядят примерно так:

    // extern long double tanhl (long double) __attribute__((const)) __attribute__((nothrow));
    [DllImport ("__Internal")]
    [Verify (PlatformInvoke)]
    static extern [unsupported Builtin: long double] tanhl ([unsupported Builtin: long double]);
    

Где пропущены имена идентификаторов и есть это [неподдерживаемая сборка: часть, которую я не понимаю.

Существует также бесчисленное множество ссылок на другие версии iOS, а также watchOS и TV, поэтому создается впечатление, что он пытается создать API и Structs для каждой существующей ОС и версии, что имеет смысл, почему файлы будут такими большими. Вот небольшой фрагмент из файла Struct:

    // extern CGPathRef _Nullable CGPathCreateCopyByTransformingPath (CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) __attribute__((availability(ios, introduced=5.0))) __attribute__((cf_audited_transfer));
    [iOS (5,0)]
    [DllImport ("__Internal")]
    [Verify (PlatformInvoke)]
    [return: NullAllowed]
    static extern unsafe CGPathRef* CGPathCreateCopyByTransformingPath ([NullAllowed] CGPathRef* path, [NullAllowed] CGAffineTransform* transform);

    // extern CGMutablePathRef _Nullable CGPathCreateMutableCopy (CGPathRef _Nullable path) __attribute__((availability(ios, introduced=2.0))) __attribute__((cf_audited_transfer));
    [iOS (2,0)]
    [DllImport ("__Internal")]
    [Verify (PlatformInvoke)]
    [return: NullAllowed]
    static extern unsafe CGMutablePathRef* CGPathCreateMutableCopy ([NullAllowed] CGPathRef* path);

    // extern CGMutablePathRef _Nullable CGPathCreateMutableCopyByTransformingPath (CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) __attribute__((availability(ios, introduced=5.0))) __attribute__((cf_audited_transfer));
    [iOS (5,0)]
    [DllImport ("__Internal")]
    [Verify (PlatformInvoke)]
    [return: NullAllowed]
    static extern unsafe CGMutablePathRef* CGPathCreateMutableCopyByTransformingPath ([NullAllowed] CGPathRef* path, [NullAllowed] CGAffineTransform* transform);

Я знаю, что эти файлы должны быть намного меньше, тем более что код Objective-C - это один заголовочный файл. Что я могу здесь делать не так?

Я могу предоставить более подробную информацию, если это необходимо!

1 ответ

Решение

Я быстро проверил модуль LMGaugeView, который вы упомянули.

Оказывается, для этого у вас должны быть установлены последние версии XCode и Sharpie (текущая версия 3.4).

Вы можете обновить шулер, запустив sharpie update, Затем вы можете создать привязку.

Я пытался, и, кажется, работает нормально, посмотрите сами: http://youtube.com/watch?v=g7qQJnMxubU&feature=youtu.be

Бесстыдный плагин - инструмент, который я использовал в видео, является оберткой для шулера, которую я использую для привязок Xamarin.iOS - objc-automatic.

Другие вопросы по тегам