Эта версия XAudio2 доступна только при ошибке Windows 8 в среде Windows 10.

Я хочу использовать библиотеку xaudio2 в своем приложении Qt для Windows 10. Я использую 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, но, насколько мне известно, xaudio2_9.lib следует использовать в Win10.

Может ли кто-нибудь помочь мне решить эту проблему?


person Ilya    schedule 27.07.2019    source источник


Ответы (1)


Это основано на определении препроцессора _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.

person Chuck Walbourn    schedule 29.07.2019