更新:XAudio 2.9 功能现在可通过XAudio2Redist用于 Windows 7 SP1、Windows 8 和 Windows 10 。因此,您不再需要旧版 DirectX SDK 来针对带有XAudio2的 Windows 7,或者如果您希望在 Windows 8.x 上支持 xWMA。下面的代码已针对包含NuGet包的情况进行了更新。
如果您使用的是 Windows 8.0 SDK 或 Windows 8.1 SDK,则xaudio2.h
标头和xaudio2.lib
所有链接到需要 Windows 8 或更高版本的 XAudio 2.8。如果您_WIN32_WINNT
正确设置了与 Windows 7 兼容的 exe(即/D _WIN32_WINNT=0x0601
或/D _WIN32_WINNT=0x0600
),那么当您构建应用程序时,您会看到构建时失败,正是因为 Windows Vista 或 Windows 7 不支持 XAudio 2.8
如果您使用 Windows 10 SDK,则xaudio2.h
标头使用 XAudio 2.9(如果_WIN32_WINNT
设置为仅在 Windows 10 上0x0A00
链接时有效)。xaudio2.lib
如果使用 Windows 10 SDK,您可以设置WIN32_WINNT
为0x0602
或0x0603
,链接反对xaudio2_8.lib
,它将再次使用 XAudio 2.8。
要支持 Windows 7 SP1 或更高版本,您应该使用在 Windows 7 SP1、Windows 8 和 Windows 8.1 上提供 XAudio 2.9 功能的XAudio2Redist 。在 Windows 10 上,它会自动转发到 XAudio 2.9 的操作系统版本——如果您只支持 Windows 10,则不需要XAudio2Redist,因为 XAudio 2.9 是 Windows 10 操作系统的一部分。NuGet 包包括xaudio2_9redist.lib
和xapobaseredist.lib
.
要支持 Windows 7 RTM 或更早版本,您必须使用旧版 DirectX SDK来获取 XAudio 2.7 标头,并且必须XAUDIO2_7.DLL
使用旧版 DirectSetup包进行部署。由于标头与 Windows 8.x SDK 和 Windows 10 SDK 冲突,实际上最好对旧版 Direct SDK 标头进行完整路径引用,此外还需要正确设置项目包含路径。
例如,DirectX Tool Kit for Audio DX11 / DX12在Audio.h
标题中包含以下内容:
#if defined(USING_XAUDIO2_REDIST) || (_WIN32_WINNT >= 0x0A00 /*_WIN32_WINNT_WIN10*/)
#define USING_XAUDIO2_9
#elif (_WIN32_WINNT >= 0x0602 /*_WIN32_WINNT_WIN8*/)
#define USING_XAUDIO2_8
#else
#define USING_XAUDIO2_7_DIRECTX
#endif
#if defined(USING_XAUDIO2_8) || defined(USING_XAUDIO2_9)
#include <xaudio2.h>
#include <xaudio2fx.h>
#include <x3daudio.h>
#include <xapofx.h>
#ifndef USING_XAUDIO2_REDIST
#if defined(USING_XAUDIO2_8) && defined(NTDDI_WIN10)
#pragma comment(lib,"xaudio2_8.lib")
#else
#pragma comment(lib,"xaudio2.lib")
#endif
#endif
#else // USING_XAUDIO2_7_DIRECTX
// Using XAudio 2.7 requires the DirectX SDK
#include <C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\comdecl.h>
#include <C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\xaudio2.h>
#include <C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\xaudio2fx.h>
#include <C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\xapofx.h>
#pragma warning(push)
#pragma warning( disable : 4005 )
#include <C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\x3daudio.h>
#pragma warning(pop)
#pragma comment(lib,"x3daudio.lib")
#pragma comment(lib,"xapofx.lib")
#endif
请参阅为音频、XAudio2 和 Windows 8添加 DirectX 工具包、已知问题:XAudio 2.7和使用 Windows 标头。