当我尝试使用XAudio2时,它在XAudio2Create(...)函数上已经失败了。(在此行初始化返回:if (FAILED(hr)) return false;
我不知道为什么,谷歌只告诉我安装 directx 可再发行组件,我做了,但没有任何变化......有什么想法吗?
这基本上是来自MSDN的代码:
IXAudio2* pXAudio2 = NULL;
bool INITIALIZE()
{
HRESULT hr = XAudio2Create(&pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR);
if (FAILED(hr)) return false;
.
.
.
}
我试过这个,但这些错误代码似乎都不匹配:
HRESULT hr = XAudio2Create(&pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR);
std::cout << "hresult: " << hr << std::endl;
if (hr == XAUDIO2_E_DEVICE_INVALIDATED) std::cout << "XAUDIO2_E_DEVICE_INVALIDATED";
if (hr == XAUDIO2_E_INVALID_CALL) std::cout << "XAUDIO2_E_INVALID_CALL";
if (hr == XAUDIO2_E_XAPO_CREATION_FAILED) std::cout << "XAUDIO2_E_XAPO_CREATION_FAILED";
if (hr == XAUDIO2_E_XMA_DECODER_ERROR) std::cout << "XAUDIO2_E_XMA_DECODER_ERROR";
if (hr == S_OK) std::cout << "S_OK";
输出:
hresult: -2147221008
没关系 谷歌:使用文档:
如果成功,则返回
S_OK
,否则返回错误代码。有关 XAudio2 特定错误代码的说明,请参阅 XAudio2 错误代码。
只需检查该错误代码即可了解发生了什么。
知道了...我忘记了代码之前的CoInitializeEx(NULL, COINIT_MULTITHREADED);
。现在它返回S_OK
!