Xamarin:修复链接器错误(带有FFImageLoading和SDWebImage)

问题描述 投票:0回答:1

我正在尝试将某些本机表单页面集成到现有Xamarin.iOS应用程序中,以便可以在多个平台之间共享这些页面。我想将Xamarin.FFImageLoading用于这些“本机窗体”页面上的图像。这通常是一项容易的任务,而我之前没有做任何问题。

我使用此特定Xamarin.iOS应用程序时遇到的问题带有Xamarin.SDWebImage软件包,该软件包已用于类似的图像功能。当添加并引用这两个NuGet程序包时,链接器会显示很多“重复符号”错误。我发现错误与WebP有关,这似乎是两个软件包使用的绑定(来自不同的来源),这会引起冲突。

所以一个普遍的问题是,当两个不同的本机库定义相同的符号时该怎么办?

此特殊错误消息的描述如下:https://docs.microsoft.com/en-us/xamarin/ios/troubleshooting/mtouch-errors#mt5212-native-linking-failed-duplicate-symbol-,我相信我要面对“两个不同的本机库碰巧定义了相同的符号”。但该页面根本没有提及该特定原因的处理方法。

我已经尝试添加我认为会有所帮助的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)

那么这些错误背后的原因可能是什么?是“两个不同的本机库定义相同的符号”。我怀疑还是其他?那我该怎么办?

有问题的两个包:

更多信息:

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

谢谢,拉斐尔

xamarin xamarin.ios linker webp ffimageloading
1个回答
0
投票

[您可以看到here,这两个软件包之间似乎不兼容,开发人员不久前已在两个GitHub存储库中打开问题,并已将问题通知他们,但到目前为止没有任何解决方案。因此,您不能同时在您的应用程序中同时使用两者。

您只需要使用两者之一,我建议使用FFImageLoading。

© www.soinside.com 2019 - 2024. All rights reserved.