[Visual Studio] 引き続きcocos2d-xでの開発(CCHttpClientで手詰まり)

「cocos2d-xによるiPhone/Androidアプリプログラミングガイド」に従い、サンプルゲームを作成してみます。

追加するソースは、他プラットフォームでのコンパイルも考慮して、Classフォルダの下に作成するのがいいみたいです。

なのですが「クラスの追加」だとプロジェクト直下に追加されてしまうようでした。

20140105cocos_8

「新しい項目の追加」なら、保存場所指定できるようなので「*.cpp」「*.h」を別箇で追加してあげました。
20140105cocos_9

ファイル追加して、背景表示ロジックを入れて、コンパイル。

すると、

3>..\Classes\GameScene.cpp(37): 
fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。
'#include "pch.h"' をソースに追加しましたか?

というエラーメッセージがでてコンパイル失敗。(それ以外のWarningも出まくってましたが。)

プリコンパイルヘッダpchは、使用しないようにする必要があるみたいです。プロジェクトのプロパティを開いて「C/C++」のプリコンパイル済みヘッダーで「プリコンパイル済みヘッダーを使用しない」に設定。

20140105cocos_10

これでコンパイル成功。エミュレータで実行してみます。

20140105cocos_11

出た出た。ブロック表示ロジックも追加。

20140105cocos_12

いい感じですね。

画像リソースは「(プロジェクトフォルダ)\Resources\ 」に入れておけば参照できました。プロジェクトのAssetsへの追加は必要なかったです。この後、ショップに出すためにパッケージングする場合には、どうなるのかは確認しないといけないですね。


ここまで動いたので、ちょっと道をそれて、サーバからのデータ取得もやっておこうと思います。画像データ取得して、ブロック画像に使用、とかやってみたいですね。

このあたりを参考にしました。

Cocos2d-xでサーバー上の画像を取得する方法
http://taberenai-resipi.blogspot.jp/2013/11/cocos2d-x.html

CCHttpRequestを使って、コールバック関数を設定してリクエストを投げればよいようです。

ある程度組み込んで、コンパイルしてみると、リンクが通らない。

3>     ライブラリ C:\cocos2d-x-2.2.1\projects\HelloProject\proj.winrt\WinRT\Win32\Debug\HelloProject_2013\HelloProject_2013.lib とオブジェクト C:\cocos2d-x-2.2.1\projects\HelloProject\proj.winrt\WinRT\Win32\Debug\HelloProject_2013\HelloProject_2013.exp を作成中
3>BlockResourceManager.obj : error LNK2001: 外部シンボル ""public: void __thiscall cocos2d::extension::CCHttpClient::send(class cocos2d::extension::CCHttpRequest *)" (?send@CCHttpClient@extension@cocos2d@@QAEXPAVCCHttpRequest@23@@Z)" は未解決です。
3>BlockResourceManager.obj : error LNK2001: 外部シンボル ""public: static class cocos2d::extension::CCHttpClient * __cdecl cocos2d::extension::CCHttpClient::getInstance(void)" (?getInstance@CCHttpClient@extension@cocos2d@@SAPAV123@XZ)" は未解決です。
3>C:\cocos2d-x-2.2.1\projects\HelloProject\proj.winrt\WinRT\Win32\Debug\HelloProject_2013\HelloProject_2013.exe : fatal error LNK1120: 2 件の未解決の外部参照

未解決の外部参照ということはライブラリが足りないのか?そこで、CCHttpClient.cppのソースを見てみると…

#include "HttpClient.h"
// #include "platform/CCThread.h"

#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT)
 && (CC_TARGET_PLATFORM != CC_PLATFORM_WP8)

ギャー!WindowdsRTとWindowPhone8は未対応だったー!ptherd.hが使えないから、ということらしい…。アリャリャ。うーん、これは現時点では、HTTP通信に関しては手詰まりだ…。

念のため、V3.0 Alpha1のほうも確認してみたのですが、こちらはWindowsRTアプリ対応は全くされていない状態でした。残念。