iOS SDK開發(fā)時(shí),有關(guān)OC和C++混編造成其它類錯(cuò)誤的問(wèn)題(Compile Sources As Objective-C++)

最近要幫忙做一個(gè)SDK潘拱,主體功能已經(jīng)實(shí)現(xiàn),是用C/C++編寫的拧略,所以導(dǎo)入這個(gè)SDK庫(kù)到新項(xiàng)目中芦岂,程序需要有以下設(shè)置才能不會(huì)報(bào)錯(cuò):

項(xiàng)目-Targets-Build Settings AppleLLVM 6.0 -Language-Compile Sources AS

C++ Language Dialect 和 C++ Standard Library

這么做后,.a靜態(tài)庫(kù)文件都能編譯通過(guò)垫蛆,但是問(wèn)題來(lái)了禽最,如果項(xiàng)目中引用到了其它的第三方庫(kù)文件,可能會(huì)產(chǎn)生錯(cuò)誤袱饭,如下圖所示:

就是很莫名其妙的就出現(xiàn)了問(wèn)題川无,經(jīng)過(guò)調(diào)試發(fā)現(xiàn),原來(lái)是Compile Sources As 設(shè)置為 Object-C++所導(dǎo)致的虑乖,也就是說(shuō)編譯器開始識(shí)別C++了懦趋,而ObjectiveC部分參數(shù)識(shí)別不了,所以就各種錯(cuò)誤了决左。

相信有的朋友在使用百度地圖api的時(shí)候愕够,添加lib庫(kù)也會(huì)遇到類似的問(wèn)題:

那么到底該如何解決呢走贪?如果切換回According To File Type,那么lib庫(kù)(SDK庫(kù))就會(huì)報(bào)錯(cuò)惑芭,切換成C++坠狡,部分第三方庫(kù)就會(huì)出差,該怎樣混編兼容呢遂跟?接下來(lái)我給出一種方案逃沿,具體如下:

1,Compile Sources As切換回According to File Type幻锁,這樣能保證其它的第三方庫(kù)凯亮、以及之后可能添加的不同類型源碼文件都沒(méi)有問(wèn)題,我們以文件類型來(lái)動(dòng)態(tài)編譯(也就是說(shuō)是oc文件哄尔,就用oc編譯假消,是C++文件,就以C++編譯)

2岭接,在新項(xiàng)目中富拗,把AppDelegate或是引用到lib庫(kù)的那個(gè)文件或是任意一個(gè)文件后綴修改成.mm,這樣鸣戴,系統(tǒng)編譯時(shí)就可以識(shí)別到C++了啃沪,我們自己的lib庫(kù)也不會(huì)出錯(cuò)了~

【PS:如果AppDelegate中有其它調(diào)用,修改成.mm后綴會(huì)引起錯(cuò)誤窄锅,那么就修改其它的文件】

3创千,此時(shí)在運(yùn)行項(xiàng)目,是不是都沒(méi)問(wèn)題了入偷?第三方庫(kù)也不會(huì)報(bào)錯(cuò)了(跟Compile Sources As有關(guān))追驴,我們自己的lib庫(kù)、SDK也不會(huì)報(bào)錯(cuò)了~

注意事項(xiàng)

1.靜態(tài)庫(kù)中如果有采用ObjectC++實(shí)現(xiàn)疏之,那么需要您保證您工程中至少有一個(gè).mm后綴的源文件(您可以將任意一 個(gè).m后綴的文件改名為.mm)氯檐,或者在工程屬性中指定編譯方式,即將XCode的Project -> Edit Active Target -> Build Setting-> GCC4.2 - Language -> Compile Sources As設(shè)置為"Objective-C++"(第二種方法容易與第三方庫(kù)沖突)

2.如果您只在Xib文件中使用了目標(biāo)lib庫(kù)(比如BMKMapView)体捏,沒(méi)有在代碼中使用它(BMKMapView)冠摄,編譯器在鏈接時(shí)不會(huì)鏈接對(duì)應(yīng)符合,需要在工程屬性中顯式設(shè)定:在XCode的Project -> Edit Active Target -> Build -> Linking ->Other Linker Flags中添加:-ObjC

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末几缭,一起剝皮案震驚了整個(gè)濱河市河泳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌年栓,老刑警劉巖拆挥,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡纸兔,警方通過(guò)查閱死者的電腦和手機(jī)惰瓜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)汉矿,“玉大人崎坊,你說(shuō)我怎么就攤上這事≈弈矗” “怎么了奈揍?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赋续。 經(jīng)常有香客問(wèn)我男翰,道長(zhǎng),這世上最難降的妖魔是什么纽乱? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任蛾绎,我火速辦了婚禮,結(jié)果婚禮上鸦列,老公的妹妹穿的比我還像新娘秘通。我一直安慰自己,他們只是感情好敛熬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著第股,像睡著了一般应民。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夕吻,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天诲锹,我揣著相機(jī)與錄音,去河邊找鬼涉馅。 笑死归园,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稚矿。 我是一名探鬼主播庸诱,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晤揣!你這毒婦竟也來(lái)了桥爽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昧识,失蹤者是張志新(化名)和其女友劉穎钠四,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跪楞,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缀去,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年侣灶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缕碎。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褥影,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阎曹,到底是詐尸還是另有隱情伪阶,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布处嫌,位于F島的核電站栅贴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏熏迹。R本人自食惡果不足惜檐薯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望注暗。 院中可真熱鬧坛缕,春花似錦、人聲如沸捆昏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)骗卜。三九已至宠页,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寇仓,已是汗流浹背举户。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遍烦,地道東北人俭嘁。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像服猪,于是被迫代替她去往敵國(guó)和親供填。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容