Macで作成したplistファイルを使って、Coco2D-XのparticleWithFile()関数を実行しています。画像データは、「textureImageData」キーを使用して plist ファイルに埋め込まれます。Mac では正常に動作しますが、Windows では CCAssert(isOK) で失敗します。以下の Coco2D-X コード (CCParticleSystem.cpp) を参照してください。
char *textureData = (char*)valueForKey("textureImageData", dictionary);
CCAssert(textureData, "");
int dataLen = strlen(textureData);
if(dataLen != 0)
{
// if it fails, try to get it from the base64-gzipped data
int decodeLen = base64Decode((unsigned char*)textureData, (unsigned int)dataLen, &buffer);
CCAssert( buffer != NULL, "CCParticleSystem: error decoding textureImageData");
CC_BREAK_IF(!buffer);
int deflatedLen = ZipUtils::ccInflateMemory(buffer, decodeLen, &deflated);
CCAssert( deflated != NULL, "CCParticleSystem: error ungzipping textureImageData");
CC_BREAK_IF(!deflated);
image = new CCImage();
bool isOK = image->initWithImageData(deflated, deflatedLen);
CCAssert(isOK, "CCParticleSystem: error init image with Data");
CC_BREAK_IF(!isOK);
m_pTexture = CCTextureCache::sharedTextureCache()->addUIImage(image, fullpath.c_str());
}
デコードは成功したようですが、問題は zlib の inflate() 関数内にあり、png ファイルの解凍に失敗しています。
助言がありますか?