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 для родного C++.
Из-за того, что VS2011 установлен и работает с кодом DirectShow, у меня установлен Windows 7.1 SDK.
VS2012 подхватил это и имел ссылки на 7.1 SDK, но компиляция моего проекта под VS2012 со ссылками на 7.1 SDK дала ошибки:
"warning C4005: '__useHeader' : macro redefinition"
Я прогуглил это и нашел запрос, подобный моему, на 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.
Для устаревших проектов, таких как образцы DirectX SDK для Windows 7 (и более ранних версий), для создания приложений с использованием D3DX с использованием DirectX SDK необходимы следующие шаги:
Измените каталоги VC++ проекта следующим образом, чтобы использовать правильный порядок для заголовков и библиотек SDK.
я. Откройте "Свойства" для проекта и выберите страницу "Каталоги VC++".
II. Выберите Все конфигурации и Все платформы.
III. Установите эти каталоги следующим образом:Исполняемые каталоги: (в раскрывающемся списке справа)
Включить каталоги: $(IncludePath);$(DXSDK_DIR) Включить
Включить каталоги библиотеки: $(LibraryPath);$(DXSDK_DIR)Lib\x86
внутривенно Нажмите Применить.
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 в вашем проекте. Этот заголовок не существует в Windows SDK, и версия DirectX SDK конфликтует с новым winerror.h.
Все библиотеки DLL D3DX устанавливаются на компьютер разработчика с помощью установки DirectX SDK. Убедитесь, что необходимые зависимости D3DX перераспределены с любым образцом или с вашим приложением, если оно перенесено на другую машину.
Имейте в виду, что технологии замены для современных применений D3DX11 включают DirectXTex и DirectXTK. D3DXMath заменяется DirectXMath.
FFS Microsoft, пожалуйста, не меняйте среднюю версию API, как это!!!