Re: sprintfDxで生成した文字列をLoadSoundMemが読み込まない ( No.1 ) |
- 名前:管理人 日時:2020/04/22 00:12
手元で以下のようなプログラムを組んで試してみましたが、正常にサウンドは再生されました
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int SoundHandle ;
char wavePath[ 260 ] ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// パスの作成
sprintfDx( wavePath, "%s\\%s", "D:\\Sound\\", "Test.wav" ) ;
// サウンドの読み込み
SoundHandle = LoadSoundMem( wavePath ) ;
// サウンドの再生
PlaySoundMem( SoundHandle, DX_PLAYTYPE_LOOP ) ;
// キー入力待ち
WaitKey() ;
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
( ↑こちらの例では Dドライブの Soundフォルダの中に Test.wav を置いてある状態です )
アイスさんの環境では上記のようなシンプルなプログラムでもサウンドの読み込みに失敗してしまうのでしょうか?
|
Re: sprintfDxで生成した文字列をLoadSoundMemが読み込まない ( No.2 ) |
- 名前:アイス 日時:2020/04/22 00:50
回答ありがとうございます。
試してみたところ、ハンドルの取得に成功し、再生できました
また、"D:\\Sound\\", "Test.wav" のそれぞれを char[260] 型に格納し、
sprintfDx(path_wave, "%s\\%s", char1, char2);
のようにした場合もハンドルが取得できました
この場合は ssfInfo.dirPath と ssf.wavePath に何か問題があるのでしょうか…
ちなみに、ハンドルを取得できなかった文字列は "SSS_File\\sampleGenre\\sample\\sample.ogg" というもので、
slnファイルがある場所をカレントディレクトリとしての音声ファイルの位置を表していたつもりです
追記:simulator(slnファイルがあるディレクトリ)\SSS_File\sampleGenre\sample\sample.ogg という構造になっています
|
Re: sprintfDxで生成した文字列をLoadSoundMemが読み込まない ( No.3 ) |
- 名前:アイス(解決) 日時:2020/04/22 01:48
さまざまなデバッグを試みた結果,ssf.wavePathに改行文字が余計に含まれており,それを取り除くことで解決いたしました。
正常に再生されることの検証,ありがとうございました。
|
|