2016-02-17 2 views
1

В моем приложении MSVC 2015 C++ используется xaudio2.lib. Так .cvxproj содержит строкуКак установить версию XAudio2 dll

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

Глядя в EXE-файл построен, я могу найти строку XAudio2_8.dll.

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

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

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

ответ

3

Если вы используете SDK Windows 8.0 или Windows 8.1 SDK, то заголовки xaudio2.h и xaudio2.lib все ссылки на XAudio 2.8, для которых требуется Windows 8 или новее. Если вы правильно установили _WIN32_WINNT для совместимого с Windows 7 (например, /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 или выше, вы должны использовать legacy DirectX SDK, чтобы получить 2,7 заголовки XAudio, и вы должны развернуть XAUDIO2_7.DLL с помощью legacy DirectSetup пакета. Из-за конфликта заголовков с SDK Windows 8.x и Windows 10 SDK, на самом деле лучше всего сделать ссылку на полный путь к устаревшим заголовкам Direct SDK, помимо необходимости правильно настроить проект. Например, DirectX Tool Kit для Audio имеет следующие в заголовке 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 

См Adding the DirectX Tool Kit for Audio, XAudio2 and Windows 8, Known Issues: XAudio 2.7 и Using the Windows Headers.

Смежные вопросы