前提:使用GPUImage 来做一些功能,代码全部正常使用
操作:
由于接入其他SDK的需求,需要在 other linker flags 加入 -ObjC,一加这个标记之后就出现了类似如下的错误
duplicate symbol '_kGPUImageYUVVideoRangeConversionForLAFragmentShaderString' in:
/Users/zcx/Library/Developer/Xcode/DerivedData/afztteztsopausbgbmbbdkirheyw/Build/Intermediates.noindex/证件水印.build/Debug-iphoneos/证件水印.build/Objects-normal/arm64/GPUImageColorConversion.o
/Users/zcx/personal/iOS/code/newStart/zhengjianshuiyin/3rd/libGPUImage.a(GPUImageColorConversion.o)
duplicate symbol '_kGPUImageYUVFullRangeConversionForLAFragmentShaderString' in:
/Users/zcx/Library/Developer/Xcode/DerivedData/afztteztsopausbgbmbbdkirheyw/Build/Intermediates.noindex/证件水印.build/Debug-iphoneos/证件水印.build/Objects-normal/arm64/GPUImageColorConversion.o
/Users/zcx/personal/iOS/code/newStart/zhengjianshuiyin/3rd/libGPUImage.a(GPUImageColorConversion.o)
duplicate symbol '_kColorConversion601FullRange' in:
/Users/zcx/Library/Developer/Xcode/DerivedData/afztteztsopausbgbmbbdkirheyw/Build/Intermediates.noindex/证件水印.build/Debug-iphoneos/证件水印.build/Objects-normal/arm64/GPUImageColorConversion.o
/Users/zcx/personal/iOS/code/newStart/zhengjianshuiyin/3rd/libGPUImage.a(GPUImageColorConversion.o)
duplicate symbol '_kColorConversion709' in:
/Users/zcx/Library/Developer/Xcode/DerivedData/afztteztsopausbgbmbbdkirheyw/Build/Intermediates.noindex/证件水印.build/Debug-iphoneos/证件水印.build/Objects-normal/arm64/GPUImageColorConversion.o
/Users/zcx/personal/iOS/code/newStart/zhengjianshuiyin/3rd/libGPUImage.a(GPUImageColorConversion.o)
duplicate symbol '_kColorConversion601' in:
/Users/zcx/Library/Developer/Xcode/DerivedData/证件水印-afztteztsopausbgbmbbdkirheyw/Build/Intermediates.noindex/证件水印.build/Debug-iphoneos/证件水印.build/Objects-normal/arm64/GPUImageColorConversion.o
/Users/zcx/personal/iOS/code/newStart/zhengjianshuiyin/证件水印/3rd/libGPUImage.a(GPUImageColorConversion.o)
ld: 1240 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
以这个为例:
duplicate symbol '_kColorConversion601' in:
/Users/zcx/Library/Developer/Xcode/DerivedData/证件水印-afztteztsopausbgbmbbdkirheyw/Build/Intermediates.noindex/证件水印.build/Debug-iphoneos/证件水印.build/Objects-normal/arm64/GPUImageColorConversion.o
/Users/zcx/personal/iOS/code/newStart/zhengjianshuiyin/证件水印/3rd/libGPUImage.a(GPUImageColorConversion.o)
和是否加入 -ObjC 没有一分钱的关系。
盲猜,你是把 GPUImage 源码引入到工程中的,但是工程中原来已经有 libGPUImage.a 了,在 证件水印/3rd下面。libGPUImage.a 就是 GPUImage 源码打的一个静态库,所以,相当于你的工程里面同时存在了2份 GPUImage ,符号冲突再正常不过了。
解决办法:
只留一份 GPUImage 。