奇怪的xCode链接器错误我从来没有见过之前说“断言失败”

通过Unity构build这个游戏,并设法通过xCode编译一次。 然而,没有任何明显的改变,这个错误信息就会出现。 我不明白从哪里开始寻找修复,但也许别人有线索? 我通过search看到了类似的错误,虽然与我的相比,修复看起来是任意的。

任何人都可以摆脱一些光? 谢谢!!

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)

这看起来像Xcode开发人员希望你永远不会看到错误的孩子…

该消息中可能对search最有用的部分是ld: Assertion failed: (memberIndex != 0) ,因为这是错误的根源,而不是支持信息。

我可能find了与你相同的几个源代码,但是他们表示这是由于Xcode试图链接你的程序而不是你自己的代码立即引起的某个资源的腐败。 一个文件被某些外部动作破坏会解释如何发生这种情况,尽pipe你的程序源码没有明显的变化。

所以解决这个问题的明显build议是通过确保引起重新编译的错误来修复这个错误。 首先要做的就是彻底清理你的项目,这样就不会使用旧的预编译文件,而且你自己的所有代码都将被重build。 由于您的错误提到源caching,请按照此处的build议来擦除所有caching,而不仅仅是通过Product-> Clean选项清除的那些caching。

错误消息还提供了使用-v标志来查看ld实际上正在执行的build议,这可以帮助您缩小哪些目标文件可能被损坏(通过显示哪些目标文件被实际使用)。 要添加标志,请转到项目设置中的“生成设置”,然后转到“链接” – >“其他链接器”标志,然后将-v添加到这些标志。 重build项目后,请在“报告导航器”面板中查看“生成”消息,然后展开链接器消息以获取链接对象的完整列表。 如果这些选项中的任何一个引用了您提供的库,请考虑删除并重新构build它们,然后再次清理并重新构build项目。