"语义错误:重新定义' __ ccContentScaleFactor'不同类型的#34;在Cocos2D v2中

时间:2014-03-11 20:13:30

标签: ios cocos2d-iphone

我开发了一款新游戏,它在我的真实ios设备上运行得非常好,甚至在模拟器上运行但是当我决定将它提交给AppStore时,它就会在这一行上出错。

extern CGFloat  __ccContentScaleFactor;

,错误是

cocos2d/Platforms/iOS/CCDirectorIOS.h:102:16: Redefinition of '__ccContentScaleFactor' with a different type: 'CGFloat' (aka 'double') vs 'float'

任何人都可以帮我解决这个问题我只是将xcode更新为5.1。感谢

2 个答案:

答案 0 :(得分:37)

重要更新:


Cocos2D v2.2 with 64-Bit fixes has been released.

我强烈建议每个cocos2d v2.x开发人员升级到此版本,而不是应用下面的快速修复。在cocos2d v2.0和v2.1中潜伏着许多64位兼容性问题,这些问题可能会在奇怪的错误,视觉故障或更多编译错误中引发他们丑陋的头脑 - 取决于应用程序。

从2015年2月开始,Apple将只接受包含64位二进制文​​件的新应用和应用升级。所以强烈建议在64位设备上使代码和cocos2d处于正常工作状态。


快速&仅针对此特定问题进行脏修复:

编辑编译器抱怨的行,将CGFloat更改为float,使其显示为:

extern float  __ccContentScaleFactor;

然而,这表明xcode正在构建arm64切片。对于cocos2d-iphone v2.x,最好从支持的体系结构中禁用/删除arm64,因为 Cocos2D v2.1及更早版本与64位设备不完全兼容!

当运行编译为64位代码并在64位设备(iPhone 5S和更新版本)上运行的Cocos2D v2.1或更早版本的应用程序时,可能会出现奇怪的错误和副作用。 iOS模拟器上可能不会出现这些问题。

答案 1 :(得分:2)

现在开发人员正在为这个问题寻找新的解决方案。因为苹果称ARM64将于2015年2月起强制执行。所以你可以通过改变来解决这个问题:

   CGFloat

    float

你在coco2d项目中遇到这个问题。 感谢