我正在尝试将一些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。