学科:IOS/KB/编译错误
< Subject:IOS | KB
Undefined symbols for architecture ...
编辑示例:
Undefined symbols for architecture armv7: "_OBJC_CLASS_$_MFMessageComposeViewController", referenced from: l_OBJC_$_CATEGORY_MFMessageComposeViewController_$_BlocksKit in BlocksKit(BlocksKit)
原因:
- 这是编译器找不到符号定义,通常这意味着某些framework没有加入项目中
解决参考:
- 解读信息,是因为找不到叫MFMessageComposeViewController的ObjC类。
- 查找MFMessageComposeViewController的信息,得知其定义在MessageUI.framework中,将其加入到项目中即可
Receiver 'ClassName' for class message is a forward declaration
编辑相似的还有:Receiver type 'ClassName' for instance message is a forward declaration
可能原因:
解决参考:
- 类是用 @class 方式引用的?尝试在实现部分用 #import 方式引用。
多语言混编错误
编辑多语言混编处理不当可能会引起:
- Expected * before *: Expected '=',',',';','asm' or '__attribute' before '<' token
- LLVM GCC 4.2 Error: Cannot find protocol declaration for 'class'
- 待补充
可能原因:
- 文件处理不当(同一个文件混用多种语言的写法,后缀设置不当,如ObjC++文件没用.mm后缀)导致编译器判断语言出错
解决参考:
- 如果能改好文件的话,那就改正吧。否则可以尝试强制编译器按指定类型编译。