問題如下:
報錯信息顯示是連接時發生了錯誤,並且可以看到有編譯後產生的目標文件如AACPlayer.o等,也證明編譯過程沒有出現問題。
網上找了好多文章,大部分說的都是關於第三方庫,或者導入文件重複的問題
文章的傳送門在這裏:文章鏈接
但是如果你的像我的一樣,並沒有使用第三方或者其他問題都被排除了 且還是沒有解決問題的話,那麼請接下去看,這裏是我對剛纔那篇文章的補充:
檢查工程裏面是否使用了全局變量,如果這個工程中有同名的全局變量時,也會報以上的錯誤。如:
在ViewController.m 和AACPlayer.m文件裏,都用了一個名爲“port”的全局變量
雖然在各自的文件裏它們都能被使用,編譯器編譯時也能夠編譯,但是一旦到了鏈接時,就會報以上的錯誤
原因
這是因爲:鏈接時,整個工程的函數和全局變量是外鏈接屬性,即每個函數和全局變量 將來在整個工程所有的文件都能夠被訪問,可以粗略地理解爲“合爲一體”,因此報同名衝突。
解決辦法:
1. 把沒有到的全局變量註釋掉。
如註釋掉AACPlayer.m中的port。build,成功
2. 將明顯不會在其他文件中引用的函數或者全局變量 用“static”關鍵字修飾,使之鏈接屬性改成內鏈接。
如將AACPlayer.m中的port(或者ViewController.m)前面用“static”修飾,build,成功。
到此結束