Я пытаюсь интегрировать некоторые страницы Native Forms в существующее приложение Xamarin. iOS, чтобы эти страницы могли быть разделены между несколькими платформами. Я хотел бы использовать Xamarin.FFImageLoading для изображений на этих страницах Native Forms. Обычно это простая задача, и я делал это раньше без каких-либо проблем.
Проблема, с которой я сталкиваюсь в этом конкретном приложении Xamarin. iOS поставляется с пакетом Xamarin.SDWebImage, который уже используется для аналогичной функциональности изображения. Когда эти два пакета NuGet добавляются и на них ссылаются, компоновщик показывает много ошибок «Duplicate Symbol». Я обнаружил, что ошибки связаны с WebP , который, по-видимому, является связующим звеном, которое используют два пакета (из разных источников), которые вызывают конфликты.
Итак, общий вопрос: что я могу сделать, когда две разные нативные библиотеки определяют одинаковые символы?
Это конкретное сообщение об ошибке описано здесь: https://docs.microsoft.com/en-us/xamarin/ios/troubleshooting/mtouch-errors#mt5212 -native-linking -failed-duplicate-symbol- и я считаю, что я сталкиваюсь с "Две разные нативные библиотеки могут определять одни и те же символы". но на этой странице вообще не упоминается, что делать с указанным c причиной.
Я попытался добавить аргументы mtouch, которые, как я думал, могут помочь, такие как --registrar:static
и -gcc_flags -dead_strip
, и я также попытался добавить операторы [assembly: LinkWith (..., SmartLink = true)]
в AssemblyInfo.cs (или файл .csproj). Хотя это не помогло.
К сожалению, мне не разрешено делиться своим исходным кодом, но его очень легко воссоздать, просто сделав новый проект Xamarin. iOS и добавив два пакета. и затем вызывая их обоих с помощью некоторого простого вызова метода в AppDelegate.cs (просто для того, чтобы убедиться, что ни один из них не был полностью удален при связывании), например:
new FFImageLoading.ImageService();
new SDWebImage.FLAnimatedImageView();
Я ожидаю, что проект будет построен, но проект не будет построен, вместо этого будет показано много ошибок, таких как:
Native linking failed, duplicate symbol: '_WebPAllocateDecBuffer'.
Duplicate symbol in: /.../liblibwebp.a(buffer_dec.o) (Location related to previous error)
Duplicate symbol in: /.../WebP.a(libwebpdspdecode_neon_la-alpha_processing_neon.o) (Location related to previous error)
Так что может быть причиной этих ошибок? Является ли это «Две разные нативные библиотеки определяют одинаковые символы». как я подозреваю или это что то другое? И что я могу с этим поделать?
Два рассматриваемых пакета:
Дополнительная информация:
- Xamarin. iOS Версия: 13.16.0.13 (сообщество Visual Studio)
- Xcode 11.4
Спасибо, Рафаэль