學科:IOS/KB/編譯錯誤
外觀
< Subject:IOS | KB
示例:
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 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後綴)導致編譯器判斷語言出錯
解決參考:
- 如果能改好文件的話,那就改正吧。否則可以嘗試強制編譯器按指定類型編譯。