奇怪的xCode链接器错误我之前从未见过"断言失败"

时间:2014-10-27 00:33:51

标签: c# ios c xcode linker

通过Unity构建这个游戏,并设法通过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 个答案:

答案 0 :(得分:1)

这似乎是Xcode开发人员希望你从未真正看到过的错误之小......

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

我可能找到了你做的相同的几个来源,但是they indicated这是由Xcode试图链接你的程序的一个资源中的损坏引起的,而不是由你自己的代码直接引起的。文件被某些外部操作破坏会解释如何在程序源中没有明显变化的情况下发生这种情况。

因此,解决此问题的明显建议是通过确保导致重新编译的任何内容来修复损坏。首先要做的是彻底清理项目,以便不使用较旧的预编译文件,并重建所有自己的代码。由于您的错误提到了源缓存,follow the recommendation here要擦除所有缓存,而不仅仅是那些由Product-&gt; Clean选项清除的缓存。

错误消息还提供了使用-v标志来查看ld实际正在做什么的建议,这可能有助于缩小哪些目标文件可能已损坏(通过向您显示哪些是实际使用)。要添加标记,请转到项目设置中的Build Settings,转到Linking-&gt;其他链接器标记,然后将-v添加到这些标记。重建项目后,查看Report Navigator面板中的Build消息,然后展开链接器消息以获取链接对象的完整列表。如果这些选项中的任何一个引用了您提供的库,请在清理和重建项目之前考虑删除并重建它们。