• 【axc】关于duplicate symbols for architecture x86_64错误的第三种可能及其解决办法


     

    今天分析一下duplicate symbols for architecture x86_64错误  也是困扰我一段时间   不过很幸运 在半个小时内找到了解决方案

     

    百度上对于duplicate symbols for architecture x86_64这种错误最多的两种解决方法是:

    第一:有框架文件没有包含,导入错误即解决
    第二:是由于我的粗心,在导入头文件时不小心把.h导入了.m文件,所以出现了上述错误,有一个duplicate的错误提示,修改了导入部分OK了。

     

    但是。。我却遇到了第三种情况。。

    duplicate symbol _RoutePlanningViewControllerStartTitle in:

        /Users/axc_5324/Library/Developer/Xcode/DerivedData/health_town-arzecxyrnmmpyxacejwclxojeaml/Build/Intermediates/health town.build/Debug-iphonesimulator/health town.build/Objects-normal/x86_64/MyTabbarViewController.o

        /Users/axc_5324/Library/Developer/Xcode/DerivedData/health_town-arzecxyrnmmpyxacejwclxojeaml/Build/Intermediates/health town.build/Debug-iphonesimulator/health town.build/Objects-normal/x86_64/NavigationViewController.o

    duplicate symbol _RoutePlanningViewControllerDestinationTitle in:

        /Users/axc_5324/Library/Developer/Xcode/DerivedData/health_town-arzecxyrnmmpyxacejwclxojeaml/Build/Intermediates/health town.build/Debug-iphonesimulator/health town.build/Objects-normal/x86_64/MyTabbarViewController.o

        /Users/axc_5324/Library/Developer/Xcode/DerivedData/health_town-arzecxyrnmmpyxacejwclxojeaml/Build/Intermediates/health town.build/Debug-iphonesimulator/health town.build/Objects-normal/x86_64/NavigationViewController.o

    duplicate symbol _RoutePlanningPaddingEdge in:

        /Users/axc_5324/Library/Developer/Xcode/DerivedData/health_town-arzecxyrnmmpyxacejwclxojeaml/Build/Intermediates/health town.build/Debug-iphonesimulator/health town.build/Objects-normal/x86_64/MyTabbarViewController.o

        /Users/axc_5324/Library/Developer/Xcode/DerivedData/health_town-arzecxyrnmmpyxacejwclxojeaml/Build/Intermediates/health town.build/Debug-iphonesimulator/health town.build/Objects-normal/x86_64/NavigationViewController.o

    ld: 3  duplicate symbols for architecture x86_64

    clang: error: linker command failed with exit code 1 (use -v to see invocation)

     

    有道给我的翻译是这样的:重复的路线规划视图控制器开始象征冠军 = =。。玛德制杖

    不过也比较清楚 。。。某个controller出现了问题  出现了导入重复错误。

    可是!他喵的我检查了半天也!没!有!导!入!错!误!

    经过代码的一步步排查(还好我从小养成了良好的编码风格,要么光找就得找一天)。。发现了这么三个奇(sha)葩(bi):

     

    这是高德SDK里的路径导航用到的变量值,当时直接复制过来的。。没管那么多,谁知道这时候掉链子了

     

    我盯着他看了半天,他盯着我看了半天。大眼盯小眼看了三分钟,,,,,

     

    嗯,delete(去死吧你!)

     

    然后把他们声明到了interface里去,赋值在view did load中进行  假装这是普通变量

     

    编译,,成功!

     

    我也不知道为什么高德2015年的SDK Demo为啥不会出错,哦对  忘了说了  这个情况在真机上正常  但无法在模拟器中编译

     

    以上就是对于duplicate symbols for architecture x86_64这种报错的第三种解决办法,,可以检查检查代码中有没有声明的弱语法变量,而且还没有编译器的提示的那种。。最后最重要的一点 大家不要随便命名!不要随便命名!不要随便命名!否则很容易和SDK中的对象或变量重名!

     

    毕竟SDK不会告诉你他用了那些第三方库是不是?这样很没B格的好吧。。所以命名最好按照规范命名。

     

    祝大家编程愉快!

     

     

     

  • 相关阅读:
    mac os 虚拟机安装
    linux 安装Swagger(swagger-editor , swagger-ui)
    Centos6.5安装pip命令以及中途遇到的问题
    CentOS6.5 下将 Python2.6.6 升级到Python3.5
    要么忙着活,要么忙着死
    在CentOS6.8下安装Docker
    Elasticsearch 不同的搜索类型之间的区别
    解决 Python shell 中 Delete/Backspace 键乱码问题
    Java 反射机制
    Spring Security Oauth2 的配置
  • 原文地址:https://www.cnblogs.com/axclogo/p/5591275.html
Copyright © 2020-2023  润新知