iOS開發,導入c文件引發的Could not build module 'UIKit'問題


導致出現異常的原因是是因為工程中添加了某(第三方開源庫)

一般情況下出現“Unknown type name”是頭文件互相引用出現的,這里可以排除,由於源碼使用是c\c++與oc混編,

考慮新的XCode編譯文件類型導致的,嘗試了幾種方案,下面三種可以解決問題。

解決方案一:

選擇所有.c文件,將屬性的 identity and type 改為Objective-C Source。

解決方案二:

選擇所有.c文件,將.c修改為.m

解決方案三:

將Compile Sources As 改為 Objective-C++

 
方案三由於修改所有文件的編譯類型,所有可能會導致其他包括c、c++代碼的提示 錯誤,不過都是些的提示異常,按提示修改即可。
 

另外,添加第三方庫一般步驟分三步:

1)拖入庫文件夾,copy一份加入自己的項目

        2)添加庫所需要的框架或者動態鏈接庫

        3)ARC下修改編譯屬性 -fno-objc-arc

但是今天加入zipArchive ,按步驟加入,增加libz動態庫,修改-fno-objc-arc一下報了23個錯誤(汗too many errors emitted, stopping now),都是expected identifier or '(' ,unknown type name 'NSString',could not build module 'Foundation',could not build module 'UIKit'。

 通過百度,stackOverflow上找到解決方法:

   在所在項目pch文件中,把自己所#import的頭文件做如下操作 

 #ifdef __OBJC__

    #import 

 #endif

分析了一下,zipArchive庫是C OC C++文件混編,pch里面自加的頭文件是全局性的,當在C文件import時其實是沒有意義的,也就是問題出處,所以要ObjC區分開編譯,這樣總是就解決了。


今天在添加Redis的時候報錯,參考這個修改不報錯了

 

 

 

 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM