iOS/KB/编译错误
Undefined symbols for architecture ...
Undefined symbols for architecture ...
“symbol(s) not found for architecture i386 clang: error: linker command failed withsymbol(s) not found for architecture i386 clang: error:
linker command failed with exit code 1 (use -v to see invocation) ”
示例:
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
可能原因:
解决参考:
类是用 @class 方式引用的?尝试在实现部分用 #import 方式引用。
多语言混编错误
多语言混编处理不当可能会引起:
Expected * before *: Expected '=',',',';','asm' or '__attribute' before '<' token
LLVM GCC 4.2 Error: Cannot find protocol declaration for 'class'
待补充
可能原因:
文件处理不当(同一个文件混用多种语言的写法,后缀设置不当,如ObjC++文件没用.mm后缀)导致编译器判断语言出错
解决参考:
如果能改好文件的话,那就改正吧。否则可以尝试强制编译器按指定类型编译。