来自Windows Developer 中的"如何初始化XAudio2">
- Microsoft Windows 10 SDK
- Visual Studio 2019社区
- 微软。XAudio2.RRedist NuGet软件包已安装
- 英特尔(R(奔腾(R(CPU 4415Y@1.60GHz x64
- 适用于工作站的Windows 10 Pro 64位操作系统
以下代码示例:
#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。
如果使用错误查找工具,您会看到800401F0
转换为CO_E_NOTINITIALIZED
。
如注释中所述,您必须首先初始化COM:
HRESULT hr = CoInitializeEx( nullptr, COINIT_MULTITHREADED );
if (FAILED(hr))
// error
我提交了一份编辑,以在Microsoft文档页面上注意到这一事实。
您还应该查看DirectX音频工具包,以获取大量的XAudio2示例代码。GitHub上还有XAudio2的示例。
clang/LLVM for Windows v10适用于最新的Windows 10 SDK中的xaudio2.h
和XAudio2Redist NuGet包标头。请记住,如果您不使用MSBuild,则需要手动集成XAudio2Redist NuGet include/lib。否则,如果您在Windows 10 SDK中使用xaudio2.h
标头,则需要为Windows 8或更高版本设置_WIN32_WINNT
。