為什么會報(bào)錯(cuò)
Apple大約在五年前就聲明即將廢棄libstdc++相關(guān)c++ lib,只不過到Xcode10才正式不再支持芒澜。
實(shí)際上目前絕大數(shù)項(xiàng)目和第三方庫早已不依賴stdc++,一般出這個(gè)問題的都是比較老的項(xiàng)目或者依賴了較老版本的第三方庫導(dǎo)致检吆。
如何解決
臨時(shí)解決方案(不推薦)
編譯時(shí)報(bào)not found libstdc++.6.0.9.tbd not found,是因?yàn)閄code10沒有這個(gè)庫,我們可以從低版本的Xcode中拷貝一份過來陶衅。
模擬器路徑為 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
真機(jī)路徑為
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
把此文件拷貝到Xcode10對應(yīng)路徑即可
此方案能夠保證代碼正常運(yùn)行在真機(jī)以及iOS11以下的模擬器上,不支持對iOS12的模擬器進(jìn)行調(diào)試。而且策泣,本身這種做法屬于強(qiáng)行使用libstdc++,除非有一些很重要的庫無法及時(shí)替換抬吟,否則不太推薦
正式解決方案(推薦)
刪除項(xiàng)目中引用的libstdc++和libstdc++.6.0.9.tbd萨咕,如果有第三方框架依然依賴libstdc++,請嘗試更新庫火本,如果更新也不行危队,請聯(lián)系提供方或者更換別的庫使用。
如何知道哪些庫依賴了libstdc++钙畔?
這是很多人比較疑惑的一點(diǎn)茫陆,也沒有人做過相關(guān)解答,因?yàn)榫幾g器只會告訴你找不到libstdc++,并沒有說是哪些庫用到了這個(gè)擎析。此處提供一個(gè)辦法給大家:
使用pod集成的第三方庫
請打開項(xiàng)目路徑下的pod文件夾簿盅,找到Pod.xcodeproj
文件,右鍵顯示包內(nèi)容
叔锐,然后用文本編輯打開project.pbcproj文件。
然后在文本中全局搜索 libstdc++.6.0.9 和 libstdc++见秽,刪除所有匹配結(jié)果愉烙,然后CMD+S保存
手動導(dǎo)入的第三方庫
找到工程文件XXXX.xcodeproj
,右鍵顯示包內(nèi)容
,讓然后用文本編輯打開project.pbcproj文件解取。
然后在文本中全局搜索 libstdc++.6.0.9 和 libstdc++步责,刪除所有匹配結(jié)果,然后CMD+S保存
然后返回Xcode禀苦,CMD+B編譯蔓肯,如果直接編譯成功,說明你的項(xiàng)目并不依賴stdc++振乏,可能是以前的三方庫的依賴忘了刪除蔗包,或者第三方庫更新過自己的依賴。
如果編譯失敗慧邮,則會有對應(yīng)的報(bào)錯(cuò)信息告訴你是哪個(gè)庫缺少依賴调限,然后就更新對應(yīng)的庫就可以了舟陆。