0

我想在 Windows 10 的 Qt 应用程序中使用 xaudio2 库。我将 Qt creator 4.9.2 用作 IDE,并与 MinGW 7.3.0 编译器结合使用。据我所知,xaudio2 是 Windows SDK 的一部分,从 Win8 开始。我从这个页面获得了最新的 SDK 版本并将其安装在我的工作站上。我通过在我的 .pro 文件中添加以下行来导入这个库:

INCLUDEPATH += "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um"
unix|win32: LIBS += -lxaudio2

并在我的来源中包含所需的定义,如下所示:

#include <xaudio2.h>

但是当我尝试编译我的应用程序时,会出现以下错误:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\xaudio2.h:20: error: #error "This version of XAudio2 is available only in Windows 8 or later. Use the XAudio2 headers and libraries from the DirectX SDK with applications that target Windows 7 and earlier versions."
 #error "This version of XAudio2 is available only in Windows 8 or later. Use the XAudio2 headers and libraries from the DirectX SDK with applications that target Windows 7 and earlier versions."

  ^~~~~

我无法理解,为什么编译器不会将我的系统识别为 Win10,而是将其识别为 Win7。我还发现,这个 SDK 版本中只有 xaudio2_8.lib,但是 AFAIK,xaudio2_9.lib 应该在 Win10 上使用。

有人可以帮我解决这个问题吗?

4

1 回答 1

2

这是基于_WINNT_WIN32预处理器定义的。

如果您查看 xaudio2.h,您会看到:

#if(_WIN32_WINNT < _WIN32_WINNT_WIN8)
#error "This version of XAudio2 is available only in Windows 8 or later. Use the XAudio2 headers and libraries from the DirectX SDK with applications that target Windows 7 and earlier versions."
#endif // (_WIN32_WINNT < _WIN32_WINNT_WIN8)

_WINNT_WIN32定义必须是( 0x0602Windows 8.0)、或0x0603(Windows 8.1) 或0x0A00(Windows 10) 以针对 XAudio 2.8/2.9。

请参阅此博客文章Microsoft 文档:使用 Windows 标头

更新:请注意,有一个新软件包可将 XAudio 2.9 降级到 Windows 7 SP1 或更高版本。请参阅Microsoft 文档

于 2019-07-29T06:18:17.957 回答