在Visual Studio Community 2019解决方案中成功初始化XAudio2



来自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

最新更新