2014-10-27 16 views
3

通過Unity構建這個遊戲,並設法通過xCode編譯一次。然而,沒有任何明顯的變化,這個錯誤信息就會出現。我不明白從哪裏開始尋找修補程序,但也許別人有線索?我通過搜索看到了類似的錯誤,雖然與我的相比,修復看起來是任意的。奇怪的xCode鏈接器錯誤我從來沒有見過之前說過「斷言失敗」

任何人都可以擺脫一些光?謝謝!!

0 0x1034de0e7 __assert_rtn + 144 1 0x10351350c archive::File<arm>::makeObjectFileForMember(archive::File<arm>::Entry const*) const + 1142 2 0x103512c9a archive::File<arm>::forEachAtom(ld::File::AtomHandler&) const + 416 3 0x10352a6a1 ld::tool::InputFiles::forEachInitialAtom(ld::File::AtomHandler&, ld::Internal&) + 465 4 0x10353490e ld::tool::Resolver::resolve() + 48 5 0x1034dec47 main + 679 A linker snapshot was created at: /tmp/wingOstar-2014-09-26-171939.ld-snapshot ld: Assertion failed: (memberIndex != 0), function makeObjectFileForMember, file /SourceCache/ld64/ld64-236.4/src/ld/parsers/archive_file.cpp, line 355. clang: error: linker command failed with exit code 1 (use -v to see invocation)

回答

1

這似乎是錯誤的小子的Xcode開發者希望你永遠不會真正看到...

該消息很可能最有用的搜索對抗將是ld: Assertion failed: (memberIndex != 0)的一部分,因爲這是錯誤的根源,而不是支持信息。

我大概找到了和你一樣的源碼,但是they indicated這是由於其中一個資源腐敗造成的,Xcode試圖鏈接你的程序,而不是你自己的代碼立即引起的。一個文件被一些外部動作破壞會解釋如何發生這種情況,儘管你的程序來源沒有明顯的變化。

因此,修復此問題的明顯建議是通過確保造成重新編譯的任何錯誤來修復損壞。首先要做的是徹底清理你的項目,這樣就不會使用舊的預編譯文件,並且你自己的所有代碼都會被重建。由於您的錯誤提到源緩存,follow the recommendation here要清除所有緩存,而不僅僅是通過Product-> Clean選項清除的那些緩存。

錯誤信息也給出了一個建議(您展示哪些是實際使用)使用-v標誌,看看有什麼ld究竟是幹什麼,它可以幫助你縮小該目標文件可能已損壞。要添加標誌,請轉到項目設置中的「生成設置」,進入「鏈接」 - >「其他鏈接器」標誌,然後將-v添加到這些標誌。重建項目後,查看Report Navigator面板中的Build消息,並展開鏈接器消息以獲取鏈接對象的完整列表。如果這些選項中的任何一個引用了您提供的庫,請考慮刪除並重建它們,然後再次清理並重新構建項目。