c++ - mmioOpen 出现奇怪的文件未找到错误

标签 c++ windows xaudio2

我一直在研究 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";

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

最佳答案

改变

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

m_hmmio = mmioOpen( strFileName, NULL, MMIO_ALLOCBUF | MMIO_READ )

关于c++ - mmioOpen 出现奇怪的文件未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365579/

相关文章:

c++ - 处理值和引用语义的模板类

c++ - Linux 中的 "install library"实际上是什么意思?

c++ - C++中的简单位图图形?

c++ - 逐行读取txt

c++ - 替代 gethostbyname

windows - 如何在 cmd/batch 脚本中仅使用通配符导航到以单个字符命名的子目录?

c++ - 在 dllmain 中的 DLL_THREAD_ATTACH 期间是否有其他线程挂起

C++ - 将 DirectSound 或 XAudio2 与 EAX 一起使用

c++ - 在 DirectX Windows 8 应用程序中播放声音

c++ - 如何使用 XAudio2 获取给定时间的频率值?