【问题标题】:In release build getting MTOUCH : error MT5213: Duplicate symbol在发布版本中获取 MTOUCH:错误 MT5213:重复符号
【发布时间】:2018-09-01 18:47:34
【问题描述】:

我们的 Xamarin.iOS 版本构建失败并出现 MTOUCH:错误 MT5213:重复符号。这个错误最近开始发生,很可能是由于某个地方的 nuget 包,但有趣的是这些 API 看起来一点也不熟悉。我已尝试调查来源,但找不到它们的来源。

我试过了。 1.将Xamarin表单从最新版本降级到最后一点版本2.5xxxx 2. 删除自 7 月上次更新以来添加的所有 nuget 包。 3.添加--registrar:static 4.添加 -gcc_flags -dead_strip 减少错误但仍然导致此错误 ___2018-08-24T22:01:20.5791820Z clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)[/Users/vsts/agent/2.136.1/work/1/s /Client/projectName.Client.Forms/iOS/projectName.Forms.iOS.csproj] 2018-08-24T22:01:20.5920220Z 错误 MT5209:本机链接错误:引用来自 /Users/vsts/agent/2.136.1/work/1/ 的“_CustomSetup”中的符号(尚未分配地址)_WebPInitYUV444Converters s/Client/projectName.Client.Forms/iOS/obj/iPhone/Release/mtouch-cache/WebP.a(libwebpdecode_la-io_dec.o) 用于架构 armv7 [/Users/vsts/agent/2.136.1/work/1 /s/Client/projectName.Client.Forms/iOS/projectName.Forms.iOS.csproj] 2018-08-24T22:01:20.6050340Z MTOUCH:错误 MT5201:本机链接失败。请查看构建日志和提供给 gcc 的用户标志:-dead_strip [/Users/vsts/agent/2.136.1/work/1/s/Client/projectName.Client.Forms/iOS/projectName.Forms.iOS.csproj ] 2018-08-24T22:01:20.6130420Z MTOUCH:错误 MT5202:本机链接失败。请查看构建日志。 [/Users/vsts/agent/2.136.1/work/1/s/Client/projectName.Client.Forms/iOS/projectName.Forms.iOS.csproj] 2018-08-24T22:01:20.6148240Z 2018-08-24T22:01:20.6180880Z 60 个警告 2018-08-24T22:01:20.6215590Z 4 个错误

怀疑 nuget dll 的各种 --linkskip 选项。 如何获得完整的错误?我可以绕过这些吗?这是日志文件的一部分,非常感谢任何帮助/指针。

2018-08-29T07:57:46.1674730Z 重复符号 _WebPMultRows 在: 2018-08-29T07:57:46.1761750Z /Users/vsts/agent/2.138.6/work/1/s/Client/projectName.Client.Forms/iOS/obj/iPhone/Staging/mtouch-cache/WebP.a (libwebpdspdecode_la-alpha_processing.o) 2018-08-29T07:57:46.1944120Z /Users/vsts/agent/2.138.6/work/1/s/Client/projectName.Client.Forms/iOS/obj/iPhone/Staging/mtouch-cache/liblibwebp.a (alpha_processing.o) 2018-08-29T07:57:46.2117500Z 重复符号 _WebPMultARGBRows 在: 2018-08-29T07:57:46.2265350Z /Users/vsts/agent/2.138.6/work/1/s/Client/projectName.Client.Forms/iOS/obj/iPhone/Staging/mtouch-cache/WebP.a (libwebpdspdecode_la-alpha_processing.o)

【问题讨论】:

    标签: xamarin xamarin.ios nuget webp


    【解决方案1】:

    此错误的可能原因:

    • 同一个原生库被包含两次。
    • 两个不同的原生库恰好定义了相同的符号。
    • 本机库未正确构建,并且包含相同的符号 不止一次。您可以使用以下一组来确认这一点 来自终端的命令(将 i386 替换为 x86_64/armv7/armv7s/arm64 根据您要构建的架构):

      更多信息您可以访问链接error-messages

    【讨论】:

    • 不幸的是,正如我所提到的,这对我不起作用。我还尝试在我的 PC、Mac 甚至 AppCenter 上构建都出现相同的错误,尝试各种 mtouch 参数组合。
    【解决方案2】:

    对我有用的是将以下内容添加到所有配置中的 mtouch 参数中,特别是对于 release|iphone(模拟器之前工作)

    --registrar:static -gcc_flags "-framework libSkipSharp -dead_strip"

    这个链接很有帮助,包括很多试验和错误:https://docs.microsoft.com/en-us/xamarin/ios/troubleshooting/mtouch-errors#mt5xxx-gcc-and-toolchain-error-messages

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      相关资源
      最近更新 更多