来自Windows中的“如何初始化XAudio2”
以下代码示例:
#include <iostream>
#include <xaudio2.h>
HRESULT init_audio(void)
{
    IXAudio2* pXAudio2 = NULL;
    HRESULT hr;
    if (FAILED(hr = XAudio2Create(&pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR)))
        return hr;
    IXAudio2MasteringVoice* pMasterVoice = NULL;
    if (FAILED(hr = pXAudio2->CreateMasteringVoice(&pMasterVoice)))
        return hr;
    return hr;
}
int main()
{
    std::cout << "Hello World!\n";
    std::cout << std::hex << init_audio() << std::endl;
}直接进入一个新的控制台解决方案,在失败的CreateMasteringVoice和错误800401F0之后返回。
使用任何其他编译器(GNU、LLVM、Clang)都无法成功解析XAudio2.h。
发布于 2020-12-26 22:58:46
如果使用错误查找工具,您将看到800401F0转换为CO_E_NOTINITIALIZED。
正如注释中所指出的,您必须首先初始化COM:
HRESULT hr = CoInitializeEx( nullptr, COINIT_MULTITHREADED );
if (FAILED(hr))
   // error我在Microsoft页面上提交了一个编辑来注意这个事实。
您还应该查看音频DirectX工具包以获得详细的XAudio2示例代码。还有XAudio2在GitHub上的样本。
clang/LLVM v10适用于最新的Windows10SDK中的xaudio2.h和XAudio2Redist NuGet包头。请记住,如果不使用XAudio2Redist NuGet /lib,则需要手动集成MSBuild。否则,如果在Windows10SDK本身中使用xaudio2.h标头,则需要为Windows 8或更高版本设置_WIN32_WINNT。
https://stackoverflow.com/questions/65453464
复制相似问题