iOS - linker command failed with
2016-10-12 本文已影响0人
PatrickChina
duplicate symbol XXXX in:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ld: 7 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
对于这个错误,大多数原因在于重复引用。当然,一般自己建的类不会出现重复的,但是检查一下引用的第三方类库会不会有重复的。除了这些肉眼可见的错误之外还有一些表面上看不到的错误:
我之前遇到一个错误,后来发现是定义了const int a = 1;导致的,具体是这样的
在A类的.h文件中定义了const int a = 1;在B类引用了A类(#import"A.h"),然后在B类中视同了A类里面定义的a,结果编译就出错了。原因是const是常量,所以每次引用A类的时候它就会被引用一次,这样在A.m和B.h中引用了两次A.h,导致编译器认为A.h中的a引用了两次,就报错了duplicate symbol _a in:的错误。
解决方式是在const前面加static修饰,static const int a = 1;这样定义了之后,a只会被引用一次,就不会报错了。