【问题标题】:"Semantic error: Redefinition of '__ccContentScaleFactor' with a different type" in Cocos2D v2Cocos2D v2 中的“语义错误:用不同类型重新定义 '__ccContentScaleFactor'”
【发布时间】:2014-04-15 15:37:28
【问题描述】:

我开发了一个新游戏,它在我的真实 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。谢谢

【问题讨论】:

标签: ios cocos2d-iphone


【解决方案1】:

重要更新:


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

我强烈建议每个 cocos2d v2.x 开发者升级到这个版本,而不是应用下面的快速修复。 cocos2d v2.0 和 v2.1 中潜伏着许多 64 位兼容性问题,它们可能会在奇怪的错误、视觉故障或更多编译错误中抬起头来——具体取决于应用程序。

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


仅针对此特定问题的快速而肮脏的修复:

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

extern float  __ccContentScaleFactor;

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

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

【讨论】:

  • 必须在 CCDirectorIOS.m 中添加:float __ccContentScaleFactor = 1;
  • 这是一个简单的修复方法,但是如果它让您在 Cocoapods 中绊倒,有谁知道如何实现此修复? (我正在尝试创建一个依赖于 cocos2d 的 cocoapod 库,并且由于此错误它不会推送)
  • 你好@LearnCocos2D。从 2 月开始 arm64 将是强制性的。现在这个问题的解决方案是什么。这将不再起作用。谢谢
  • 已编辑答案,(唯一)解决方案是升级到 cocos2d v2.2。
  • 我正在使用 Cocoapods 引入 Cocos2D。 Cocoapods 说 v2.1 是 Cocos2D 的最新版本。如何通过 Cocoapods 获取 v2.2?我被卡住了吗?
【解决方案2】:

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

   CGFloat

    float

你在 coco2d 项目中遇到这个问题的地方。 谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多