升級Xcode 16 后OC 與Swift混編項目提示Undefined symbol *問題

第一種可能,升級Xcode導(dǎo)致鏈接的庫失效

剛剛升級了Xcode16.1 發(fā)現(xiàn)項目無法運行了,提示了大量的Undefined symbol *,檢查發(fā)現(xiàn)這些錯誤都出現(xiàn)在了同一個SDK中,我就去找第三方廠家給提供的SDK Demo,發(fā)現(xiàn)人家的Demo可以正常運行,然后我就創(chuàng)建了一個OC環(huán)境的項目按照人家的文檔在Generate中導(dǎo)入相關(guān)的庫發(fā)現(xiàn)還是不行,發(fā)現(xiàn)有時候在這塊點擊+號導(dǎo)入的.tbd庫在這塊不顯示但是在左側(cè)Frameworks文件夾里是有的,運行項目還是不行

之后我又嘗試在 Build Phases - Link Binary and Library中重新導(dǎo)入發(fā)現(xiàn)可以運行了不會報Undefined symbol *錯誤了。本以為解決了,但是回到自己的項目重新導(dǎo)系統(tǒng)庫運行發(fā)現(xiàn)還是不行。

因為我原來項目是OC、Swift混編的我嘗試在新建的OC項目中加入Swift代碼,運行后果然報了錯,之后我開始查找項目添加Swift后與添加前的配置差別果然發(fā)現(xiàn)了不同之處,然后嘗試調(diào)整參數(shù)設(shè)置或者刪除參數(shù)最后發(fā)現(xiàn)是受到參數(shù) SWIFT_OPTIMIZATION_LEVEL的影響

在項目中搜索SWIFT_OPTIMIZATION_LEVEL有的項目會出搜索到圖1 有的會搜索到圖2,這是我遇到的兩種環(huán)境

1. 搜索出來的第一種情況 參數(shù)在Swift Compiler - Code Generation下的子參數(shù)Optimization Level

圖1

圖1的情況點擊選項會出現(xiàn)三種,如下圖,選擇第二個-O 即可

2. 搜索出來的第二中情況 參數(shù)在User - define

需要手動輸入將參數(shù)SWIFT_OPTIMIZATION_LEVEL的值改為-O

圖2

圖2.2

這種方法雖然可能能解決undefined symbol * 問題,但是在開發(fā)調(diào)試時會導(dǎo)致其他問題,例如調(diào)試時字典數(shù)組中的值無法取出等。

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

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