Xcode報錯: linker command failed with exit code 1 (use -v to see invocation)之 duplicate symbols for architecture arm64(armv7或armv7s等)

duplicate symbol是一種常見的鏈接錯誤,不像編譯錯誤那樣可以直接定位到問題的所在。但是經過一段時間的總結,發現這種錯誤總是有一些規律可以找的。

1.出現錯誤

error: linker command failed with exit code 1 (use -v to see invocation)

紅色報錯

2.查看錯誤詳情

點擊紅色報錯,來到詳情界面

進而找到問題關鍵點:ViewController文件? ? ??7 duplicate symbols for architecture arm64

報錯類型:duplicate symbols


報錯源地

3.解決錯誤

1、首先排查項目中是否有名字重復的文件;

結合我的以上的報錯情況,查看項目中是否不止一個ViewController文件

2、檢查是否在#import頭文件的時候,錯把.h寫成了.m

通過Xcode的過濾查詢功能,我很很快就修正了錯誤。

4.總結

引用一下他人的總結,人家考慮的情況比較周全,嘿嘿

1.引入頭文件時,由于疏忽,誤引入.m文件。這種一般仔細檢查一下出現問題的類的源文件就能發現。

2.同一個類,實現兩次,即有兩個@implementation 。這種一般會有一個警告,也比較容易發現。

3.工程文件,同一個類文件被引入了兩次,引起這種錯誤的原因大概有兩種:一是多人協作開發時,導致project文件合并沖突;二是同名文件不在同一目錄下,添加到工程時造成重復添加。 這種一般在文件視圖,用名字過濾器檢查一下就發現了。

4. Targets的Build Phase設置項里,查看Complie Sources這一項,看看出現問題的類是不是有重復的,用文件名過濾也比較容易發現。這種問題一般也是多人協作開發時,project文件沖突導致的。發現這種問題,只要刪除就可以了。不過在我解決問題過程中,刪除其中一個文件時,重復文件會自動全部刪除,所以還需要單獨添加一下。

5.如果我們的工程中引用了第三方的庫,而恰好第三方的庫里面有一個ClassA,也會出現這種問題。如果不能修改第三方的庫代碼,只能修改我信自己的代碼了。

附上鏈接Duplicate Symbol鏈接錯的原因總結和解決方法

如果感覺我的文章寫的好不錯,那就不要吝嗇你的贊喲,謝謝哈!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容