ゲームが作りたいので Cocos2d-x を入れようとしたのですが(唐突)

Cocos2d-x v3.0rc1 を DL して解凍、
その中にある VS2012 向けのソリューション(cocos2d-x-3.0rc1/build/cocos2d-win32.vc2012.sln)をビルドしようとしたところ以下のエラーが出ました:
0rc1_error









エラー    549    error C2001: 定数が 2 行目に続いています。    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    606    1    cpp-tests
エラー    550    error C2144: 構文エラー : 'auto' は ')' によって先行されなければなりません。    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    607    1    cpp-tests
エラー    551    error C2448: 'ttfConfig' : 関数の定義が間違っています。    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    607    1    cpp-tests
エラー    552    error C2065: 'ttfConfig' : 定義されていない識別子です。    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    607    1    cpp-tests
エラー    553    error C2001: 定数が 2 行目に続いています。    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    607    1    cpp-tests
エラー    554    error C2146: 構文エラー : ')' が、識別子 'label' の前に必要です。    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    608    1    cpp-tests
エラー    555    error C3536: 'label': 初期化前に使用することはできません    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    609    1    cpp-tests
エラー    556    error C2664: 'void cocos2d::Node::addChild(cocos2d::Node *)' : 1 番目の引数を 'int' から 'cocos2d::Node *' に変換できません。(新しい機能 ; ヘルプを参照)    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    609    1    cpp-tests
エラー    559    error C2001: 定数が 2 行目に続いています。    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    1101    1    cpp-tests
エラー    560    error C2146: 構文エラー : ')' が、識別子 'label3' の前に必要です。    cocos2d-x-3.0rc1\tests\cpp-tests\Classes\LabelTest\LabelTestNew.cpp    1102    1    cpp-tests

1番上のエラーの該当箇所(LabelTestNew.cpp, 606行目)を見てみましょう。
0rc1_error_line







何やら怪しげなコメントが書いてありますね。どれどれ・・・
// Adding "啊" letter at the end of string to make VS2012 happy, otherwise VS will generate errors 
// like "Error 3 error C2146: syntax error : missing ')' before identifier 'label'";
(意訳:文字列の最後におまじないを追加しておくとVS2012は幸せになります)

怪しいってレベルじゃないです。どう考えてもこいつが原因です。
おそらく中国版のVisualStudioではビルドが通るのでしょう。

元のソースコードにこんな「おまじない」が含まれているのなら、こちらも「おまじない」を追加してやりましょう。
606行目と607行目に含まれる文字列リテラル:
"美好的一天啊"
を以下のように修正します:
"美好的一天啊a"


これはひどい。


同じようなエラーが同ファイルの1101行目にもあるので、そこも同様に修正します:
"美好的一天啊美好的一天啊美好的一天啊a"
これでビルドが通るはずです。

デフォルトでは libAudio がスタートアッププロジェクトに設定されているので、
cpp-tests を右クリックして「スタートアップ プロジェクトに設定」し、実行します。
0rc1_cpp-tests
















無事実行できました。
ちょっと画面サイズが合っていないのが気になりますが、画像・音・Box2D(物理エンジン)のいずれも動作しているようです。
と思ったけど、Audio のサンプルのスライダーが機能していないような・・・?まあいいか。


ちなみに自分の環境では、C3130(PDBファイルに書き込めないという旨のエラー)も出ました。
http://msdn.microsoft.com/ja-jp/library/cc416782.aspx
こちらは原因が分からなかったのですが、Cocos2d-x の zip ファイルを解凍しなおすところからやり直したところ解決したので、解凍に失敗していたか、何か関係ないところをいじってしまっていたのかもしれません。
こちらは原因不明で未解決です。Releaseビルドでのみ発生します。


Cocos2d-x を使ってゲーム開発が出来るように頑張っていきましょう!