编译cocos2d-iphone v2.x并包含arm64体系结构时发生错误。错误发生在kazmath的汇编代码中。有没有解决这个问题? (除了删除arm64)
库/ kazmath / SRC / neon_matrix_impl.c:
asm
中的未知寄存器名称'q0'
嗯,也许没什么大不了的......用现有代码完全支持iPhone 5s等会很不错。 我想这是固定的或将在cocos2d 3.x行中修复。 https://github.com/cocos2d/cocos2d-iphone/issues/534
答案 0 :(得分:7)
正确,cocos2d-iphone v3确实为arm64架构成功构建,v2.x没有。
即使编译器警告/错误相对容易修复,v2.x中仍存在许多64位兼容性问题(如CGFloat vs float不匹配等),这意味着不建议启用arm64构建对于v2.x,除非您准备自己调试并修复这些问题。更重要的是,如果您使用未经arm64测试的第三方扩展,例如cocos2d-iphone-extensions项目中的任何内容。
由于目前没有人被指派在v2.x分支上工作,我不希望v2.x接收任何未来的更新,最好不要包含arm64代码(无论如何都不会获得)。然后使用cocos2d-iphone v3开始您的下一个项目。
答案 1 :(得分:3)
我在使用Cocos2d的旧项目中遇到了这个问题。
我已经下载了Cocos2d v3,并将“kazmath”文件夹仅复制到我的旧项目中,并将其替换。
如果您不想更改所有文件,请更改:
#if defined(__ARM_NEON__)
到
#if defined(_ARM_ARCH_7)
顺便说一下,我正在尝试完全更新到Cocos2d v3
,我认为这是正确的解决方案。即使我的问题得到处理,一般来说仍然存在问题。
答案 2 :(得分:2)
使用cocos2D v3 kazmath lib(https://github.com/cocos2d/cocos2d-iphone/tree/develop-v3/external/kazmath)升级您的karmath库。
它适用于我(在iPad Air上)
答案 3 :(得分:2)
Cocos2D 2.2现在有 64位支持!
您可以从here下载2.2版。
答案 4 :(得分:0)
我这样解决了:
cocos2d
和CocosDenshion
替换为2.2版文件夹kazmath/src
中修改mad4.c
和neon_matrix_impl.c
并替换行:#if defined(__ARM_NEON__)
带
#if defined(_ARM_ARCH_7)