私はLinuxを使用しています。
次のような関数があります。
PlayBackgroundIntroMusic((char *)"IntroMusic");
機能は次のとおりです。
ボイド サウンド マネージャー::
PlayBackgroundIntroMusic( char * musicFile)
{
// 各プラットフォームの拡張子を連結
strcat (musicFile,audioExtension);
CCLOG("musicFile: %c" musicFile);
SimpleAudioEngine::sharedEngine()->playBackgroundMusic(std::string(CCFileUtils::fullPathFromRelativePath(musicFile)).c_str(), false);
}
しかし、オンラインでメモリへのアクセスが悪い:
strcat (musicFile,audioExtension);
audioExtension が宣言されています:
#含む
std::string の使用;
#含む
std::cout; の使用 std::cerr を使用します。std::endl の使用;
/**
* プラットフォームごとにサウンド拡張を宣言
* アンドロイド = ogg
※iOS=カフェ
* WIN32 = mp3
*/
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
static const char * audioExtension = ".wav";
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
static const char * audioExtension = ".caf";
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
static const char * audioExtension = ".ogg";
#endif
だから、私は持っていると思っていました:
iOS の IntroMusic.caf Android の IntroMusic.ogg
何が起こっているのですか?
注:私はしようとしました:
char * musicFileWithExtension = strcat (musicFile,audioExtension);
しかし、とにかくうまくいきませんでした。
musicFile は定数ではありません。ファイルの名前が長すぎる場合のオーバーフローを避けるために tempchar[80] を宣言したくない例 cc リファレンス
前もって感謝します。