Как установить версию XAudio2 dll

Мой проект приложения MSVC 2015 C ++ использует xaudio2.lib, Таким образом, .cvxproj содержит строку

<AdditionalDependencies>xaudio2.lib;%(AdditionalDependencies)</AdditionalDependencies>

Глядя в .exe встроенный, я могу найти строку XAudio2_8.dll,

Таким образом, кажется, что компилятор (или компоновщик) решил использовать только версию 2_8.

Это приводит к проблеме, что мое приложение не может быть запущено на компьютере с Windows 7, потому что только более низкие версии XAudio2.dll установлены там, и он не может найти XAudio2_8.dll,

Так как же я могу исправить / изменить мой проект, чтобы полученный .exe мог быть запущен в Windows 7? Как я могу указать, чтобы использовать XAudio2_7.dll, например?

1

Решение

Если вы используете Windows 8.0 SDK или Windows 8.1 SDK, то xaudio2.h заголовки и xaudio2.lib все ссылки на XAudio 2.8, который требует Windows 8 или более поздней версии. Если бы вы установили _WIN32_WINNT правильно для совместимого с Windows 7 exe (т.е. /D _WIN32_WINNT=0x0601 или же/D _WIN32_WINNT=0x0600) затем, когда вы создавали свое приложение, вы бы увидели сбой во время сборки именно потому, что XAudio 2.8 не поддерживается для Windows Vista или Windows 7:

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.

Если вы используете Windows 10 SDK, то xaudio2.h заголовок использует XAudio 2.9, если _WIN32_WINNT установлен в 0x0A00 который работает, когда связан с xaudio2.lib только на Windows 10. Если вы используете Windows 10 SDK, вы можете установить WIN32_WINNT в 0x0602 или же 0x0603, ссылка против xaudio2_8.lib и он снова будет использовать XAudio 2.8.

Для поддержки Windows 7 или более ранней версии вы должны использовать устаревший DirectX SDK чтобы получить заголовки XAudio 2.7, и вы должны развернуть XAUDIO2_7.DLL с использованием наследие DirectSetup пакет. Из-за конфликтов заголовков с Windows 8.x SDK и Windows 10 SDK на самом деле лучше всего делать ссылку на полный путь к устаревшим заголовкам Direct SDK в дополнение к необходимости правильно настроить пути включения проекта. Например, Набор инструментов DirectX для аудио имеет следующее в Audio.h заголовок:

#if (_WIN32_WINNT >= 0x0602 /*_WIN32_WINNT_WIN8*/)
#if defined(_MSC_VER) && (_MSC_VER < 1700)
#error DirectX Tool Kit for Audio does not support VS 2010 without the DirectX SDK
#endif
#include <xaudio2.h>
#include <xaudio2fx.h>
#include <x3daudio.h>
#include <xapofx.h>
#pragma comment(lib,"xaudio2.lib")
#else
// 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

Увидеть Добавление набора инструментов DirectX для аудио, XAudio2 и Windows 8, Известные проблемы: XAudio 2.7, а также Использование заголовков Windows.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]