首页 > 代码库 > 由于枚举类型导致的1 duplicate symbol for architecture x86_64错误
由于枚举类型导致的1 duplicate symbol for architecture x86_64错误
错误如下:
duplicate symbol _iphoneType in: /Users/midmirror/Library/Developer/Xcode/DerivedData/PRTPrinter-eixyioynyswgruahtmzninftkbmm/Build/Intermediates/PRTPrinter.build/Debug-iphonesimulator/PRTPrinter.build/Objects-normal/x86_64/PRTScreenFit.o /Users/midmirror/Library/Developer/Xcode/DerivedData/PRTPrinter-eixyioynyswgruahtmzninftkbmm/Build/Intermediates/PRTPrinter.build/Debug-iphonesimulator/PRTPrinter.build/Objects-normal/x86_64/PRTHomeVC.old: 1 duplicate symbol for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个问题比较奇葩的地方在于,用真机是可以编译成功执行
的,但是用模拟器就不能编译通过
。google 了半天也没找到方法。特此记录。
罪魁祸首是用了一个 C 语言的枚举类型定义方式
// 错误enum iphoneType{ iphone4s = 320*480, iphone5s = 320*568, iphone6 = 375*667, iphone6p = 414*736, iPad = 1024*768}iphoneType;
改成Objtctive-C 的枚举类型样式就可以了
// 正确typedef NS_ENUM(NSInteger, iphoneType) { iphone4s = 320*480, iphone5s = 320*568, iphone6 = 375*667, iphone6p = 414*736, iPad = 1024*768};
其实在C 语言的样式前面直接加上 typedef 也可以,不过不建议这么做,还是乖乖按照 OC 的定义方式来吧。
文/midmirror(简书作者)
原文链接:http://www.jianshu.com/p/2b79e450d67e
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/2b79e450d67e
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
由于枚举类型导致的1 duplicate symbol for architecture x86_64错误
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。