未定义的符号 Swift.UnsafeMutableBufferPointer

Posted

技术标签:

【中文标题】未定义的符号 Swift.UnsafeMutableBufferPointer【英文标题】:Undefined symbols Swift.UnsafeMutableBufferPointer 【发布时间】:2016-10-20 10:09:48 【问题描述】:

下载 Xcode 8 并迁移到 Swift 3 后,我无法再归档项目。同时,项目的构建没有任何问题。

我得到的错误:

架构 armv7 的未定义符号: “Swift.UnsafeMutableBufferPointer.(subscript.materializeForSet : (Swift.Int) -> A).(closure #1)",引用自: 泛型特化的函数签名特化 和 Swift.UnsafeMutableBufferPointer : Swift 中的 Swift.MutableCollection 和 Swift.UnsafeMutableBufferPointer : Swift._siftDown 的 Swift.RandomAccessCollection in Swift> (inout A, 索引:A.Index,子范围:Swift.Range,作者:inout (A.Iterator.Element, A.Iterator.Element) -> Swift.Bool) -> () 在 OrderCoordinator.o 泛型特化的函数签名特化 和 Swift.UnsafeMutableBufferPointer : Swift 中的 Swift.MutableCollection 和 Swift.UnsafeMutableBufferPointer : Swift._heapSort 的 Swift.RandomAccessCollection in Swift> (inout A, subRange : Swift.Range, by : inout (A.Iterator.Element, A.Iterator.Element) -> Swift.Bool) -> () 在 OrderCoordinator.o 泛型特化的函数签名特化 和 Swift.UnsafeMutableBufferPointer : Swift 中的 Swift.MutableCollection 和 Swift.UnsafeMutableBufferPointer : Swift._partition 中的 Swift.RandomAccessCollection (inout A, subRange : Swift.Range, by : inout (A.Iterator.Element, A.Iterator.Element) -> Swift.Bool) -> OrderCoordinator.o 中的 A.Index ld:未找到架构 armv7 的符号 clang:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)

我可以通过在以下函数中注释数组排序代码来消除错误:

func didFinishWithResults(_ results: [PhotoProcessorResult]) 
    guard let album = albumService.currentAlbum else  return 
    //let sortedResults = results.sorted(by:  $0.fileIndex < $1.fileIndex )
    let updateItems = zip(sortedResults, album.assetItems).map  (photoProcessorResult, assetItem) -> UpdateItem in
        UpdateItem(path: photoProcessorResult.filePath, position: photoProcessorResult.fileIndex, isCover: assetItem.isCover)
    
    albumService.updateAlbumWithItems(updateItems)  (success, errorDescription) in
        if success 
            self.handleAlbumUpdate()
         else 
            self.showFailureAlert(errorDescription) 
                self.startProcessingAlbum(self.albumService.currentAlbum)
            
        
    

虽然我通过使用 NSArray 对数据进行排序来解决问题,但我不喜欢这种解决方案。

将不胜感激任何建议。

【问题讨论】:

在更改之前发布您的代码 【参考方案1】:

自从它编译后,我认为您的代码没有任何问题。它说“架构 armv7 的未定义符号”并且无法存档的事实告诉我,您的项目正在发生一些事情,但不幸的是,有很多方法会导致这个问题。 arm7 是 iphone 5,因此您的项目可能仅针对 arm64 正确设置。试试这里提到的解决方案:Undefined symbols for architecture armv7

【讨论】:

【参考方案2】:

如果这里只是这一行的问题:

let sortedResults = results.sorted(by:  $0.fileIndex < $1.fileIndex )

你可以改成它:

let sortedResults = results.sorted  (first, second) -> Bool in
    return first.fileIndex < second.fileIndex

它解决了你的问题吗?

【讨论】:

我有完全相同的问题,这对我不起作用。普通的array.sort() 也没有(我的只是Floats 的数组)【参考方案3】:

更新到 XCode 8.1 后问题消失。 谢谢大家:)

【讨论】:

以上是关于未定义的符号 Swift.UnsafeMutableBufferPointer的主要内容,如果未能解决你的问题,请参考以下文章

是否有解决未定义参考/未解决符号问题的一般准则?

Firebase 未定义符号

VC DLL 中 C++ 符号的 MinGw 未定义符号

未定义的符号 Swift.UnsafeMutableBufferPointer

未定义的符号引用,但库已链接

libboost 中未定义的符号