美文网首页
Xcode10 dyld: Symbol not found:

Xcode10 dyld: Symbol not found:

作者: PotterSun | 来源:发表于2018-11-14 15:08 被阅读328次

    今天使用Xcode10打开混合开发swift的项目,编译成功,但是运行时候出现如下错误。

    dyld: Symbol not found: __T0BOWV
      Referenced from: /private/var/containers/Bundle/Application/E9F341B5-D7C8-4341-AC4F-8E29F33A9351/SmartLife.app/Frameworks/AliyunLOGiOS.framework/AliyunLOGiOS
      Expected in: /private/var/containers/Bundle/Application/E9F341B5-D7C8-4341-AC4F-8E29F33A9351/SmartLife.app/Frameworks/libswiftCore.dylib
     in /private/var/containers/Bundle/Application/E9F341B5-D7C8-4341-AC4F-8E29F33A9351/SmartLife.app/Frameworks/AliyunLOGiOS.framework/AliyunLOGiOS
    

    分析

    从直接意思看,是缺少libswiftCore.dylib 这个库,但是我到app/Framework 确实可以看到这个库,这个就很奇怪了,为什么有这个库IDE还说找不到呢。后来找到了一篇文章,解决了这个问题。核心如下

    libswiftCore.dylib 的版本不对
    把当前系统xcode选择使用当前IDE,然后再编译,这样libswiftCore.dylib 的版本就对了。

    需要具备知识

    xcode9 使用的Swift version 是4.1.2
    xcode10 使用的Swift version 是4.2
    可以通过命令查看当前电脑使用的swiftc的版本号 /usr/bin/swiftc --version
    Xcode9

    Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
    Target: x86_64-apple-darwin17.7.0
    

    Xcode10

    Apple Swift version 4.2 (swiftlang-1000.11.37.1 clang-1000.11.45.1)
    Target: x86_64-apple-darwin17.7.0
    

    而使用xcode 的版本要个当前系统的xcode版本保持一致,
    查看当前xcode命令 xcode-select -p
    设置当前xcode命令 xcode-select --switch /Applications/Xcode.app/
    切换后在重新编译一下

    解决步骤

    1.切换当前xcode的版本 xcode-select --switch /Applications/Xcode.app/
    2.重新编译出问题的三方包 AliyunLOGiOS
    3.将编译好的framework加入项目中
    4.在Target->General->Embedded Binaries中加入这个库
    5.重新Run即可

    总结

    出现symbol not found XXX 一般会有如下情况
    1.你加入了 XXX 这个库,但是支持的CPU结构和你运行的手机不一致,这个时候要使用lipo -info 查看库支持的CPU结构。
    2.使用的XXX版本和所需要的不一致,上面就是解决办法。

    相关文章

      网友评论

          本文标题:Xcode10 dyld: Symbol not found:

          本文链接:https://www.haomeiwen.com/subject/lvqjfqtx.html