我想在Windows 10的Qt应用程序中使用xaudio2库。我将Qt creator 4.9.2与MinGW 7.3.0编译器结合使用作为IDE。据我所知,xaudio2是Windows SDK的一部分,从Win8开始。我从此页面获得了最新的 SDK 版本,并将其安装在我的工作站上。我通过在 .pro 文件中添加以下行来导入此库:
INCLUDEPATH += "C:Program Files (x86)Windows Kits10Include10.0.18362.0um"
unix|win32: LIBS += -lxaudio2
并且还在我的来源中包含所需的定义,如下所示:
#include <xaudio2.h>
但是当我尝试编译我的应用程序时,出现以下错误:
C:Program Files (x86)Windows Kits10Include10.0.18362.0umxaudio2.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 标识为Win7。我还发现,这个SDK版本中只有xaudio2_8.lib,但AFAIK,xaudio2_9.lib应该在Win10上使用。
谁能帮我解决这个问题?
基于预处理器定义的_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
定义必须是 0x0602
(Windows 8.0( 或 0x0603
(Windows 8.1( 或 0x0A00
(Windows 10( 才能面向 XAudio 2.8/2.9。
请参阅此博客文章和Microsoft文档:使用 Windows 标头。
更新:请注意,有一个新软件包可以将XAudio 2.9降级到Windows 7 SP1或更高版本。请参阅Microsoft文档。