私は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 リファレンス
前もって感謝します。