Подтвердить что ты не робот

"Семантическая ошибка: переопределение" __ccContentScaleFactor "с другим типом" в Cocos2D v2

Я разработал новую игру, и она отлично работает на моих реальных устройствах 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. спасибо

4b9b3361

Ответ 1

Важное обновление:


Cocos2D v2.2 с 64-битными исправлениями.

Я настоятельно рекомендую каждому разработчику cocos2d v2.x перейти на эту версию, а не применять быстрое решение ниже. В cocos2d v2.0 и v2.1 существует много проблем с совместимостью с 64-битными версиями, которые могут вызывать уродливую голову в странных ошибках, сбоях в визуализации или более компиляционных ошибках - в зависимости от приложения.

Начиная с февраля 2015 года 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 Simulator.

Ответ 2

Как сейчас разработчики находят новое решение для этой проблемы. потому что яблоко говорит, что ARM64 будет обязательным с февраля 2015 года. поэтому вы можете исправить это, просто изменив:

   CGFloat

к

    float

где каждая проблема возникает в проекте coco2d. спасибо