引入C文件報(bào)錯(cuò)

今天看到個(gè)問(wèn)題,編輯工程提示Unknown type name 'NSString',如下圖

導(dǎo)致出現(xiàn)異常的原因是是因?yàn)楣こ讨刑砑恿薢ipArchive(第三方開(kāi)源解壓縮庫(kù))

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

考慮新的XCode編譯文件類(lèi)型導(dǎo)致的,嘗試了幾種方案,下面三種可以解決問(wèn)題。

解決方案一:

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

解決方案二:

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

解決方案三:

將Compile Sources As 改為 Objective-C++

方案三由于修改所有文件的編譯類(lèi)型,所有可能會(huì)導(dǎo)致其他包括c、c++代碼的提示錯(cuò)誤,不過(guò)都是些的提示異常,按提示修改即可。

另外,添加第三方庫(kù)一般步驟分三步:

1)拖入庫(kù)文件夾,copy一份加入自己的項(xiàng)目

2)添加庫(kù)所需要的框架或者動(dòng)態(tài)鏈接庫(kù)

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

但是今天加入zipArchive ,按步驟加入,增加libz動(dòng)態(tài)庫(kù),修改-fno-objc-arc一下報(bào)了23個(gè)錯(cuò)誤(汗too

many errors emitted, stopping now),都是expected identifier or '(' ,unknown type name 'NSString',could

not build module 'Foundation',could not build module 'UIKit'。

通過(guò)百度,stackOverflow上找到解決方法:

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

#ifdef __OBJC__

#import

#endif

分析了一下,zipArchive庫(kù)是C OC C++文件混編,pch里面自加的頭文件是全局性的,當(dāng)在C文件import時(shí)其實(shí)是沒(méi)有意義的,也就是問(wèn)題出處,所以要ObjC區(qū)分開(kāi)編譯,這樣總是就解決了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容