这个游戏是通过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)
最佳答案
这似乎是 Xcode 开发人员希望您永远不会真正看到的错误之子......
该消息中可能对搜索最有用的部分是 ld: Assertion failed: (memberIndex != 0)
,因为这是错误的根源而不是支持信息.
我可能找到了与您相同的几个来源,但是 they indicated这是由 Xcode 试图链接您的程序的资源之一的损坏引起的,而不是由您自己的代码立即引起的。一个文件因某些外部操作而损坏可以解释尽管您的程序源代码没有明显变化,但这种情况是如何发生的。
因此,解决此问题的明显建议是通过确保重新编译导致损坏的任何原因来修复损坏。要做的第一件事是彻底清理您的项目,以便不使用旧的预编译文件,并重建您自己的所有代码。由于您的错误提到了源缓存,follow the recommendation here删除所有缓存,而不仅仅是那些被 Product->Clean 选项清除的缓存。
错误消息还建议使用 -v
标志来查看 ld
实际在做什么,这可能会帮助您缩小目标文件可能损坏的范围(通过向您展示实际使用了哪些)。要添加标志,请转到项目设置中的build设置,然后转到链接-> 其他链接器标志,然后将 -v
添加到这些标志。重建项目后,查看 Report Navigator 面板中的 Build 消息,并展开链接器消息以获得链接对象的完整列表。如果这些选项中的任何一个引用了您提供的库,请考虑删除并重建它们,然后再次清理和重建您的项目。
关于c# - 我在说 "Assertion failed"之前从未见过的奇怪的 xCode 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26579615/