3

我一直在玩 XAudio2 但遇到了一些奇怪的mmioOpen问题

由于某种原因,它似乎失败了MMIOERR_FILENOTFOUND,即使文件在那里,实际上该文件与我正在加载的其他文件位于同一目录中,这些文件工作正常......

我用来测试的 wav 文件只是 August 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结构来获取错误号,并且在它给我的不起作用的情况下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";

我真的看不出它为什么无法打开其中一些波浪的原因......

4

1 回答 1

0

改变

m_hmmio = mmioOpen( strFileName, &info, MMIO_ALLOCBUF | MMIO_READ )

m_hmmio = mmioOpen( strFileName, NULL, MMIO_ALLOCBUF | MMIO_READ )
于 2009-01-17T11:11:20.927 回答