Xamarin:修复链接器错误(使用FFImageLoading和SDWebImage)



我正在尝试将一些Native Forms页面集成到现有的Xamarin.iOS应用程序中,以便在多个平台之间共享这些页面。我想用Xamarin。FFImageLoading for images on these Native Forms pages。这通常是一项简单的任务,我以前也做过,没有任何问题。

我在这个特殊的Xamarin.iOS应用程序中遇到的问题是Xamarin包。SDWebImage已用于类似的图像功能。当这两个NuGet包被添加和引用时,链接器显示了大量的";重复符号"-错误。我发现这些错误与WebP有关,这似乎是两个包(来自不同来源(使用的绑定,导致了冲突。

因此,一个普遍的问题是,当两个不同的本地库定义相同的符号时,我该怎么办?

此处描述了此特定的错误消息:https://learn.microsoft.com/en-us/xamarin/ios/troubleshooting/mtouch-errors#mt5212-本地链接失败的重复符号-我相信我正面临";两个不同的本地库恰好定义了相同的符号"但那一页根本没有提到该如何处理这一具体原因。

我已经尝试添加我认为会有所帮助的mtouch参数,例如--registrar:static-gcc_flags -dead_strip,我还尝试在AssemblyInfo.cs(或.csproj文件(中添加[assembly: LinkWith (..., SmartLink = true)]语句。但这些都无济于事。

不幸的是,我不被允许共享我的源代码,但只要制作一个全新的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)

那么,这些错误背后的原因是什么呢?是";两个不同的本地库定义相同的符号"正如我所怀疑的,还是其他原因?我该怎么办?

有问题的两个包:

  • https://github.com/luberda-molinet/FFImageLoading
  • https://github.com/xamarin/XamarinComponents/tree/master/iOS/SDWebImage

更多信息:

  • Xamarin.iOS版本:13.16.0.13(Visual Studio社区(
  • Xcode 11.4

谢谢,Rafael

正如你在这里看到的,这两个包之间似乎不兼容,开发人员不久前在两个GitHub存储库中都打开了问题,并通知他们这个问题,但到目前为止没有任何解决方案。因此,你不能在应用程序中同时拥有这两个功能。

你只需要使用两个中的一个,我建议你使用FFImageLoading。

相关内容

  • 没有找到相关文章

最新更新