シヴァのブログ

UnityやUE4や趣味とかいろいろ...

MacでCocos2d-xを実機で表示してみた

エラーと対策をメモ。
環境構築は書いてません。以下のサイトを参考にしてください。
個人的に一番わかりやすいサイトでした。
unsolublesugar.com

f:id:shivaT:20160809201021p:plain:w600




・以下の赤枠が表示されない
f:id:shivaT:20160809202812p:plain:w600
原因:
Xcode7より前のバージョンのため表示されない。
(Xcode7以降がApple Developer Program に登録しなくても自作iOSアプリを実機にインストールして動かすことができる)
対策:
Xcode7以降のバージョンにする。


・ターミナルでXcodeのバージョンを確認
xcodebuild -version


・Could not find Developer Disk Image
原因:
XcodeのVersionに対応するiPhoneのDisk Imageが入ってない
Xcodeのバージョン(7.2)は、iPhoneのバージョン(9.3)を対応していないため、エラーが出る)
対策:
Xcodeをアップデートする。


・Xcode7.3にアップデートできない
原因:
Macのバージョンを「OS X El Capitan」以降にしないと、Xcodeのバージョンを7.3にできない。
対策:
Macのバージョンを「OS X El Capitan」以降にする。


No provisioning profiles found: No non–expired provisioning profiles were found.
対策:
dentityのBundle Identifierを適当な名前を変える。
例:
com.shiva.HelloCocos

Bundle IDについて:
これから申請しようとしているアプリのプロジェクトファイルのIDのこと


Unlock iPhone to Continue
原因:
iPhoneにアプリを入れようとしているが、セキュリティ的に信頼のないアプリだから。
対策:
iPhoneの設定の
「一般>プロファイル>デベロッパAPP」にあるものを信頼する。


・#includeのパスにClassesを追加する
qiita.com


・clang: error: linker command failed with exit code 1 (use -v to see invocation)
原因:
clang: error: clangのコンパイルでのエラー
linker command failed with exit code 1:ライブラリが足りてないため
対策①:
「Build Settings」タブの「Enable Bitcode」の項目を「YSE」から「NO」に変更。
対策②:
linker command failed with exit code 1 (use -v to see invocation) でシミュレータが使えない - Qiita
対策③:
【Xcode】【iOS】ライブラリ導入時のApple Mach-O Linker Error. library not found for -lcurl【謎のエラー?】 - Qiita



ld: symbol(s) not found for architecture arm64
原因:
ビルドされたライブラリに適切なバイナリが存在しなかったため
対策:
「Build Settings」タブの「Architectures」の項目の「Build Active Architecture Only」の「Debug」の項目を「Yes」から「No」に変更。
参考:
自作ライブラリのリンク時に Undefined symbols for architecture エラーが発生する。


・Undefined symbols for architecture armv7
原因:
「リンク時に該当するオブジェクトが見つからない」というエラー

  • 2つの原因
    • 使用しているFrameworkの参照忘れ
    • Architecturesの「armv7」が定義されている場合

対策:
「ImageIO.Framwork」のフレームワークを追加する。
参考:
「Undefined symbols for architecture armv7:〜」という警告が出たときの対策方法 - 酢ろぐ!


・"", referenced from:
原因:
ディレクトリにはファイルが存在しているが、Xcodeがそのファイルの場所を把握できていないから。
対策①:
Xcode linker problem - Cocos2d-x Forum
対策②:
ツリー構造の「Resources」を右クリックして、「Add Files to PROJECTNAME」で画像ファイルを追加する。
[Xcode][Cocos2d-x] Resouces ディレクトリ以下の画像が読み込まれない - ナクナイ
対策③:
「Build Phases」タブの「Run Script」に以下を設定
「find "${SRCROOT}/../Resources" -exec touch -cm {} \;」
参考:
Xcodeでリソース(画像、音楽データなど)を自動更新 – KumanBlog
XcodeでBundle Resourcesを更新しても反映されない場合の対処法 - Qiita



・スプライト(Sprite)画像が表示されない(白い)
原因:
よくわからない...。
対策:
「Build Settings」タブの「Compress PNG Files - Packaging」の項目の「Remove Text Metadata From PNG Files」を「NO」にする。
参考:
cocos2dxでSprite or TMXTiledMap を読み込んでもNullや画像が表示されない現象の解決方法 - rabbit-dev
メモ:
cocos2d::Sprite* sprite = cocos2d::Sprite::create("HelloWorld.png");
sprite->setPosition(300,200);←でエラー(Thread 1:EXC_BAD_ACCESS(code-1,address-0x0))
this->addChild(sprite);

このエラーは、画像の保存したアドレスに何も入っていない(NULL)ため


・'continue' statement not in loop statement
原因:
ブロックの中では continue ステートメントは使えない
対策:
ブロックの中では continue ステートメントは使えない. - Qiita


Redefinition of 'xxxx'
原因:
同じファイルに、同じコードが書かれている
対策:
変数とか変更。


cannot jump from switch statement to this case label
原因:
switch文でオブジェクトを生成するから
対策:
生成しない。