【发布时间】:2021-08-03 21:17:36
【问题描述】:
我有一个二进制 Swift xcframework,它引用了另外两个开源 Swift 框架(从源代码构建)。
我的框架及其依赖项是在启用BUILD_LIBRARY_FOR_DISTRIBUTION 选项的情况下构建的(以支持模块稳定性)。
这种设置多年来一直运行良好,但现在在 Xcode 12.5 或更高版本中构建我的框架时,当使用该框架的应用程序在 Xcode
dyld: Symbol not found: __ZN5swift34swift50override_conformsToProtocolEPKNS_14TargetMetadataINS_9InProcessEEEPKNS_24TargetProtocolDescriptorIS1_EEPFPKNS_18TargetWitnessTableIS1_EES4_S8_E
我似乎不是唯一遇到此问题的人。看一下 Github 提供了一些otherframeworksexperiencing Xcode 12.5 中的相同问题。
建议here 这个问题是由以下警告引起的,显然现在导致了这个致命错误:
不推荐使用'class'关键字进行协议继承;改用“AnyObject”
我注意到在我的案例 (Starscream) has not yet changed the class keyword to AnyObject 中涉及到受影响的依赖项,但是我尚未(尚未)证实这绝对是原因。
不幸的是,关于这个问题的文档很少,但随着人们升级到 Xcode 12.5+,并且针对这个新版本构建了更多的二进制框架,它似乎可能会相当普遍并且越来越流行。
p>除了降级到 Xcode 12.4 之外,是否有人对如何解决/缓解此问题有任何想法?
【问题讨论】:
-
我的自定义框架也面临同样的问题。当我设置 BUILD_LIBRARY_FOR_DISTRIBUTION = "NO" 我的框架正在工作。但是如果我设置 BUILD_LIBRARY_FOR_DISTRIBUTION = "YES" 我会遇到与您相同的错误。顺便说一句,我正在使用 Xcode 13,你找到任何解决方案还是我必须降级 Xcode 12.4。
标签: ios swift xcode clang dyld