我一直在玩XAudio2,但遇到了mmioOpen
函数的一些奇怪问题
由于某些原因它似乎失败了MMIOERR_FILENOTFOUND
,即使文件在那里,实际上该文件与我正在加载的其他文件在同一目录中工作正常......
用于测试的wav文件只是8月SDK示例中的那些,如果我将名称复制到XAudio2BasicSound示例中,它可以正常工作...在某些情况下,我必须将声音重命名为1 .wav让他们打开......
//"Counting.wav" does not work
Sounds.append(Audio.Sound(L"c:/test/xaudio2/Counting.wav"))
Sounds.append(Audio.Sound(L"Electro_1.wav"))
//"heli.wav" does not work
Sounds.append(Audio.Sound(L"c:/test/xaudio2/heli.wav"))
//"HipHoppy_1.wav" does not work
//"c:/test/xaudio2/HipHoppy_1.wav" does not work
Sounds.append(Audio.Sound(L"1.wav"))
Sounds.append(Audio.Sound(L"MusicMono.wav"))
Sounds.append(Audio.Sound(L"MusicSurround.wav"))
//"Techno_1.wav" does not work
//"c:/test/xaudio2/Techno_1.wav" does not work
Sounds.append(Audio.Sound(L"2.wav"))
我只是使用SDKwavefile.h中的wav类。我添加了mmioinfo
结构来获取错误编号,并且在没有工作的casses中它给了我MMIOERR_FILENOTFOUND
,即使文件在那里,都在同一目录中......我只是更改了第63行有点所以我可以从mmioOpen
得到错误代码。除了将Audio.Sound
方法传递给wav.Open
之外,MMIOINFO info;
ZeroMemory(&info, sizeof(MMIOINFO));
m_hmmio = mmioOpen( strFileName, &info, MMIO_ALLOCBUF | MMIO_READ );
if(!h_hmmio)
std::wcout << L"Error Code: " << info.wErrorRet << L"\n";
不会对字符串执行任何操作。
{{1}}
我真的觉得没有理由不打开这些波浪......
答案 0 :(得分:0)
更改
m_hmmio = mmioOpen( strFileName, &info, MMIO_ALLOCBUF | MMIO_READ )
到
m_hmmio = mmioOpen( strFileName, NULL, MMIO_ALLOCBUF | MMIO_READ )