0

当我尝试使用 XAudio2 时,它已经在 XAudio2Create(...) 函数中失败了。(INITIALIZE 在这一行返回: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
4

2 回答 2

0

好的,知道了...我忘记了CoInitializeEx(NULL, COINIT_MULTITHREADED);代码之前的内容。现在它回来了S_OK

于 2014-01-10T04:19:00.683 回答
0

没关系谷歌:使用文档

如果成功则返回S_OK,否则返回错误代码。有关XAudio2 特定错误代码的说明,请参阅 XAudio2 错误代码。

只需检查该错误代码即可了解发生了什么。

于 2014-01-10T02:49:06.447 回答