美文网首页
linker command failed with exit

linker command failed with exit

作者: 永永不止步 | 来源:发表于2018-02-02 11:06 被阅读0次

    一、 没有定义的类参与编译

    • 错误如下,未定义的People没有参与ViewController的编译
    Undefined symbols for architecture x86_64:
      "_OBJC_CLASS_$_People", referenced from:
          objc-class-ref in ViewController.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    • 导致bug的原因是:你在创建类或者拖类文件到项目时,没添加到 Targets,所以没有参与编译


      image.png
    • 解决办法有两种,任选一种方法
      1、 删除文件,重新创建,勾选Targets
      2、选择project -> Targets ->build phases ->compile source


      image.png

      选择加号,选择People.m,add ,切记不要选择.h文件


      image.png
      image.png
      再次编译,问题解决。

    二、 重复定义的类参与编译

    • 报错原因如下:
    duplicate symbol _OBJC_CLASS_$_Person in:
        /Users/mc/Library/Developer/Xcode/DerivedData/test-dlvutcgcpudtifekmtfntdhisfna/Build/Intermediates.noindex/test.build/Debug-iphonesimulator/test.build/Objects-normal/x86_64/Person-A9830D8080639151.o
    duplicate symbol _OBJC_METACLASS_$_Person in:
        /Users/mc/Library/Developer/Xcode/DerivedData/test-dlvutcgcpudtifekmtfntdhisfna/Build/Intermediates.noindex/test.build/Debug-iphonesimulator/test.build/Objects-normal/x86_64/Person-A9830D8080639151.o
    ld: 2 duplicate symbols for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    • 导致的原因可能是你重复添加项目Person文件,或者导入Person.m文件。可以去下面的位置查看是否重复导入


      image.png
      image.png
    • 解决办法

    • 第一种解决办法,project -> Targets ->build phases ->compile source,选择重复文件,点击减号删除其中一个,再次编译就可以了。


      image.png
    • 第二种解决办法 选中重复的文件,右击选择delete,选择remove reference 即可,切记不要选择 Move to trash。


      image.png

    相关文章

      网友评论

          本文标题:linker command failed with exit

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