D3dx11.h не в комплекте с Windows 8.0

Моя платформа разработки - это Windows 7 x64. Я установил VS2012, и я хотел бы скомпилировать проект, который содержит некоторый код Dx11.

В частности, он включает в себя следующие файлы:

#include <d3dx11.h>
#include <d3dx10.h>

и ссылки на

#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")

У меня уже установлен VS2011 на моей машине разработки, но я хотел попробовать объекты тестирования модулей в VS2012 для родного С++.

Из-за того, что VS2011 установлен и работает с кодом DirectShow, у меня установлен SDK Windows 7.1.

VS2012 выбрал это и имел ссылки на 7.1 SDK, но компиляция моего проекта под VS2012 с 7.1 SDK, на который даны ссылки, давала ошибки:

"warning C4005: '__useHeader' : macro redefinition"

Я искал это и нашел запрос, например my на social.msdn.microsoft.com. и рекомендованное решение, связанное с комплектом Windows 8 вместо 7.1 SDK, чтобы решить эту проблему.

В комплект Windows 8 входят заголовки, такие как d3d11.h, но не d3dx11.h.

Как включить d3dx11 (из Dx SDK) вместе с комплектом Windows 8, но не получая множественные ошибки макроопределения?

Ответы

Ответ 1

Я нашел следующую довольно раздражающую цитату в этой странице MSDN.

D3DX не считается каноническим API для использования Direct3D в Windows 8 и, следовательно, не входит в соответствующий Windows SDK. Изучите альтернативные решения для работы с Direct3D API.

Для устаревших проектов, таких как Windows 7 (и более ранние версии) DirectX SDK образцов, для создания приложений с D3DX с использованием DirectX SDK:


Измените каталоги проектов VС++ следующим образом, чтобы использовать правильные порядок для заголовков и библиотек SDK.

я. Откройте "Свойства" для проекта и выберите "Каталоги VС++" стр.
II. Выберите "Все конфигурации" и "Все платформы".
III. Установите эти каталоги следующим образом:

  

Исполняемые каталоги: (в раскрывающемся списке справа)

         

Включить каталоги: $(IncludePath); $(DXSDK_DIR) Включить

         

Включить библиотечные каталоги: $(LibraryPath); $(DXSDK_DIR) Lib\x86

  

IV. Нажмите "Применить".
v. Выберите платформу x64. VI. Задайте каталог библиотеки следующим образом:

  

Библиотечные каталоги: $(LibraryPath); $(DXSDK_DIR) Lib\x64

  

Где бы ни были "d3dx9.h", "d3dx10.h" или "d3dx11.h", проекта, обязательно укажите "d3d9.h", "d3d10.h" и "dxgi.h", или "d3d11.h" и "dxgi.h", чтобы убедиться, что вы собираете более новая версия.

Вы можете отключить предупреждение C4005, если необходимо; однако это предупреждение указывает, что вы используете более старую версию этих заголовков.

Удалите все ссылки на DXGIType.h в своем проекте. Этот заголовок не существует в SDK Windows, а версия DirectX SDK конфликтует с новым winerror.h.

Все DLL-библиотеки D3DX устанавливаются на ваш компьютер разработки с помощью Установка DirectX SDK. Убедитесь, что необходимые зависимости D3DX перераспределяются с любым образцом или с вашим приложением, если оно перемещен на другую машину.

Имейте в виду, что технологии замены для текущего использования D3DX11 включают DirectXTex и DirectXTK. D3DXMath заменяется DirectXMath.

FFS Microsoft, пожалуйста, не изменяйте среднюю версию API, как это!!!