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的。