011.Bug(duplicate symbol)_01

1.

<1.情境:在真机上一切ok,但是模拟器上报错如下(截取自认为有意义的一段)

duplicate symbol __ZN9WavWriterD1Ev in:

    /Users/xiaoyadong/Library/Developer/Xcode/DerivedData/xiaoshouzhushou-fufyvysyodhmtkdzlivkuefbcsfv/Build/Intermediates/xiaoshouzhushou.build/Debug-iphonesimulator/xiaoshouzhushou.build/Objects-normal/x86_64/wav-A8225E4DB0C5B1B1.o

    /Users/xiaoyadong/Library/Developer/Xcode/DerivedData/xiaoshouzhushou-fufyvysyodhmtkdzlivkuefbcsfv/Build/Intermediates/xiaoshouzhushou.build/Debug-iphonesimulator/xiaoshouzhushou.build/Objects-normal/x86_64/wav-1F067EA0DBC29D79.o

duplicate symbol __ZN9WavWriter9writeDataEPKhi in:

    /Users/xiaoyadong/Library/Developer/Xcode/DerivedData/xiaoshouzhushou-fufyvysyodhmtkdzlivkuefbcsfv/Build/Intermediates/xiaoshouzhushou.build/Debug-iphonesimulator/xiaoshouzhushou.build/Objects-normal/x86_64/wav-A8225E4DB0C5B1B1.o

    /Users/xiaoyadong/Library/Developer/Xcode/DerivedData/xiaoshouzhushou-fufyvysyodhmtkdzlivkuefbcsfv/Build/Intermediates/xiaoshouzhushou.build/Debug-iphonesimulator/xiaoshouzhushou.build/Objects-normal/x86_64/wav-1F067EA0DBC29D79.o

ld: 9 duplicate symbols for architecture x86_64

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

<2.错误分析

由倒数第二句的error log中知道duplicate是错误的重要原因,猜测某个类文件重复

3.错误解决

然后就是蛋疼的过程,一个个排查看是哪个文件重复,最终找到wav.h和wav.mm并将其删除,重新cmd +R一切ok了.

4.解决问题后的回头思考

最初看到这个报错的时候,也曾想会具体指出是哪个文件重复了,而Xcode里的error log里的错误文件名全都不同,如:wav-A8225E4DB0C5B1B1.o & wav-1F067EA0DBC29D79.o & wav-A8225E4DB0C5B1B1.o & /wav-1F067EA0DBC29D79.o等九个文件名不同的文件,所以一下不知所措。现在回想TA们所有格式均为“wav-一串字符”,所以可以尝试搜索wav的。

原文地址:https://www.cnblogs.com/juicecoffeetea/p/4710729.html