cocos2d-x 2.2.3 から 2.2.6 へのバージョンアップ

アップルにiOSアプリを申請するためにはアプリを64ビットにすることが必要です。
cocos2d-xの古いバージョンでは64ビットに対応していないので2.2.6に対応する必要があります。

ということで対応内容を記事にしました。

<br>
①cocos2d-x2.2.6を作業ディレクリに展開します。
私は展開したcocos2d-xの中にprojectsというプロジェクトフォルダを作って作業していますので、今回もその中にprojectsを作成しました。

![スクリーンショット 2015-02-26 18.56.47.png](https://qiita-image-store.s3.amazonaws.com/0/66305/910e0960-b45b-fe97-88e1-d67587665a85.png)

<br><br>
②旧バージョンのプロジェクトを新バージョンのフォルダへコピーします。![スクリーンショット 2015-02-26 19.02.25.png](https://qiita-image-store.s3.amazonaws.com/0/66305/1996f155-7ef8-88d4-1370-a85b8a65afa4.png)

<br><br>
③iOSの対応です。
③-①Xcodeのプロジェクトに64bit対応の設定をします。
![スクリーンショット 2015-02-26 20.01.09.png](https://qiita-image-store.s3.amazonaws.com/0/66305/01b26f4f-860d-00a6-c486-cd9636dd3608.png)

<br><br>
③-②Xcodeでビルドするとリンクエラーが発生するのでエラーを修正します。

```
Undefined symbols for architecture i386:
  "cocostudio::timeline::TimelineActionData::create(int)", referenced from:
      cocos2d::extension::WidgetReader::setPropsFromJsonDictionary(cocos2d::ui::Widget*, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&) in WidgetReader.o
  "cocos2d::extension::CocoLoader::ReadCocoBinBuff(char*)", referenced from:
      cocos2d::extension::CCDataReaderHelper::addDataFromBinaryCache(char const*, cocos2d::extension::_DataInfo*) in CCDataReaderHelper.o
      cocos2d::extension::CCComRender::serialize(void*) in CCComRender.o
      cocos2d::extension::GUIReader::widgetFromBinaryFile(char const*) in GUIReader.o
      cocos2d::extension::SceneReader::createNodeWithSceneFile(char const*, cocos2d::extension::AttachComponentType) in SceneReader.o
  "cocos2d::extension::CocoLoader::CocoLoader()", referenced from:
      cocos2d::extension::CCDataReaderHelper::addDataFromBinaryCache(char const*, cocos2d::extension::_DataInfo*) in CCDataReaderHelper.o
      cocos2d::extension::CCComRender::serialize(void*) in CCComRender.o
      cocos2d::extension::GUIReader::widgetFromBinaryFile(char const*) in GUIReader.o
      cocos2d::extension::SceneReader::createNodeWithSceneFile(char const*, cocos2d::extension::AttachComponentType) in SceneReader.o
  "cocos2d::extension::CocoLoader::~CocoLoader()", referenced from:
      cocos2d::extension::CCDataReaderHelper::addDataFromBinaryCache(char const*, cocos2d::extension::_DataInfo*) in CCDataReaderHelper.o
      cocos2d::extension::CCComRender::serialize(void*) in CCComRender.o
      cocos2d::extension::GUIReader::widgetFromBinaryFile(char const*) in GUIReader.o
      cocos2d::extension::SceneReader::createNodeWithSceneFile(char const*, cocos2d::extension::AttachComponentType) in SceneReader.o
  "cocos2d::extension::stExpCocoNode::GetChildNum()", referenced from:
      cocos2d::extension::LayoutReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LayoutReader.o
      cocos2d::extension::TriggerObj::serialize(cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in TriggerObj.o
      cocos2d::extension::LoadingBarReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LoadingBarReader.o
      cocos2d::extension::ActionManager::initWithBinary(char const*, cocos2d::CCObject*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in CCActionManager.o
      cocos2d::extension::ButtonReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ButtonReader.o
      cocos2d::extension::LabelAtlasReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LabelAtlasReader.o
      cocos2d::extension::ImageViewReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ImageViewReader.o
      ...
  "cocos2d::extension::stExpCocoNode::GetChildArray(cocos2d::extension::CocoLoader*)", referenced from:
      cocos2d::extension::LayoutReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LayoutReader.o
      cocos2d::extension::TriggerObj::serialize(cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in TriggerObj.o
      cocos2d::extension::LoadingBarReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LoadingBarReader.o
      cocos2d::extension::ActionManager::initWithBinary(char const*, cocos2d::CCObject*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in CCActionManager.o
      cocos2d::extension::ButtonReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ButtonReader.o
      cocos2d::extension::LabelAtlasReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LabelAtlasReader.o
      cocos2d::extension::ImageViewReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ImageViewReader.o
      ...
  "cocos2d::extension::stExpCocoNode::GetName(cocos2d::extension::CocoLoader*)", referenced from:
      cocos2d::extension::LayoutReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LayoutReader.o
      cocos2d::extension::TriggerObj::serialize(cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in TriggerObj.o
      cocos2d::extension::LoadingBarReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LoadingBarReader.o
      cocos2d::extension::ActionManager::initWithBinary(char const*, cocos2d::CCObject*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in CCActionManager.o
      cocos2d::extension::ButtonReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ButtonReader.o
      cocos2d::extension::LabelAtlasReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LabelAtlasReader.o
      cocos2d::extension::ImageViewReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ImageViewReader.o
      ...
  "cocos2d::extension::stExpCocoNode::GetType(cocos2d::extension::CocoLoader*)", referenced from:
      cocos2d::extension::TriggerMng::buildJson(rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in TriggerMng.o
      cocos2d::extension::CCDataReaderHelper::addDataFromBinaryCache(char const*, cocos2d::extension::_DataInfo*) in CCDataReaderHelper.o
      cocos2d::extension::CCDataReaderHelper::decodeNode(cocos2d::extension::CCBaseData*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*, cocos2d::extension::_DataInfo*) in CCDataReaderHelper.o
      cocos2d::extension::CCComRender::serialize(void*) in CCComRender.o
      cocos2d::extension::GUIReader::widgetFromBinaryFile(char const*) in GUIReader.o
      cocos2d::extension::WidgetPropertiesReader0300::createWidgetFromBinary(cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*, char const*) in GUIReader.o
      cocos2d::extension::WidgetPropertiesReader0300::widgetFromBinary(cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in GUIReader.o
      ...
  "cocos2d::extension::stExpCocoNode::GetValue(cocos2d::extension::CocoLoader*)", referenced from:
      cocos2d::extension::LayoutReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LayoutReader.o
      cocos2d::extension::TriggerObj::serialize(cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in TriggerObj.o
      cocos2d::extension::LoadingBarReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LoadingBarReader.o
      cocos2d::extension::ButtonReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ButtonReader.o
      cocos2d::extension::LabelAtlasReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in LabelAtlasReader.o
      cocos2d::extension::ImageViewReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ImageViewReader.o
      cocos2d::extension::ListViewReader::setPropsFromBinary(cocos2d::ui::Widget*, cocos2d::extension::CocoLoader*, cocos2d::extension::stExpCocoNode*) in ListViewReader.o
      ...
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```

<br>
cocos2d-xがバージョンアップしたときにファイルが追加されたため、エラーが発生しています。
ActionTimelineフォルダとCocoLoader.cpp/.hをプロジェクトに追加します。
これでXCodeはエラーがでなくなったと思います。
![スクリーンショット 2015-02-26 19.41.21.png](https://qiita-image-store.s3.amazonaws.com/0/66305/38e4edae-f0bc-44d2-e296-4275fcb7765d.png)
![スクリーンショット 2015-02-26 19.41.49.png](https://qiita-image-store.s3.amazonaws.com/0/66305/aa3ecd7d-b07c-eddb-d3d4-d84a948905aa.png)

<br><br>
④androidの対応です。
Eclipseで設定したCOCOS2DXの値を2.2.6のパスに修正します。
画像では日本語化していますが、していない人は『環境設定 > General > Workspace > Linked Resources』から変更できます。
![スクリーンショット 2015-02-26 19.49.01.png](https://qiita-image-store.s3.amazonaws.com/0/66305/98a7e807-3318-00c5-1e8a-80980f051279.png)

以上が対応内容です。
android はビルドを試してないですが、問題が出た場合は追記します。