Как подключить DirectX SDK к Visual Studio 2019

Обновлено: 05.07.2024

Мне только что сказали, что SDK, который я использовал (июнь 2010 г.), больше не будет использоваться и что мне нужно использовать тот новый, который они включили в Win10. Ну и где?

Я пытаюсь запустить демонстрационное графическое решение, но не могу вызывать функции D3D11 из-за ошибок компоновщика, что для меня означает, что мне нужно включать библиотеки и тому подобное.

Если кто-нибудь может помочь мне разобраться в этом, чтобы я мог сдвинуться с мертвой точки, я буду в порядке.

@Чарли, может быть. но все рабочие места, на которые я смотрел, требуют опыта DirectX. Я использовал его в школе, но, как я уже сказал, это был старый SDK. Я знаю, что OpenGL полезно знать, но я просто очень хочу использовать DirectX

Однако это не отвечает тому, что мне нужно. Я не возражаю, если я использую Dx12 или 11, но я не могу нигде найти информацию о том, где находятся какие-либо библиотеки и включения, чтобы я мог действительно кодировать и вызывать функции.

Отдельного SDK больше нет, он был интегрирован в Windows SDK некоторое время назад. Вы можете получить справку об ошибках компоновщика, только если опубликуете сообщение об ошибке компоновщика.

1 Ответ 1

Страница MSDN Где находится DirectX SDK? предлагает вам использовать Windows SDK, в частности, Windows 8.0 SDK, Windows 8.1 SDK или Windows 10 SDK для разработки DirectX (предполагается, что это Direct3D 11 или Direct2D/DirectWrite). Для Direct3D 12 требуется Windows 10 SDK.

Если вы используете Visual Studio 2013, Visual Studio 2015 или Visual Studio 2017 RC, у вас уже есть пакет SDK для Windows 8.1 и, при необходимости, пакет SDK для Windows 10.

Важной деталью является то, что библиотека D3DX (D3DX9, D3DX10 и D3DX11) устарела и доступна только в устаревшем DirectX SDK. Это означает, что D3DX11 не является частью Windows SDK, и вам не следует его использовать.

Для HLSL вы используете D3DCompile напрямую или FXC, поставляемый с Windows SDK. Для математики вы используете DirectXMath, который входит в состав Windows SDK. Если вы используете устаревшие эффекты 11, вы можете использовать версию с GitHub. Я рекомендую вам также ознакомиться с набором инструментов DirectX для DirectX 11 и его учебными пособиями. Полный список замен для D3DX см. в разделе Жизнь без D3DX.

Если вы действительно хотите продолжать использовать устаревшие компоненты DirectX SDK с Visual Studio 2012 или более поздней версии, вы можете это сделать, но вам следует обратить внимание на подробности в нижней части страницы MSDN выше. Примечательно, что при добавлении устаревшего SDK DirectX в проект необходимо изменить порядок путей include/lib.

Для полного каталога того, где оказались различные части старого DirectX SDK, см. DirectX SDK определенного возраста, Каталог инструментов DirectX SDK, Каталог образцов DirectX SDK, а также Жизнь без D3DX статью выше.

Устройство отладки Direct3D 11 для Windows 10 не устанавливается никаким Windows SDK или устаревшим DirectX SDK. Это дополнительная функция Windows. См. раздел «Приемы отладки слоя Direct3D SDK».

Фактическая «среда выполнения DirectX» является частью операционной системы, начиная с пакета обновления 2 для Windows XP. и развертывает только некоторые необязательные параллельные вещи. Это вообще не требуется, если вы используете Windows SDK. См. Не очень прямая установка.

Visual Studio 2019 RTM (также известная как 16.0) теперь доступна для загрузки, включая обновленную версию Community. Также доступны пакеты VS 2019 RTM Redistribution (x86, x64), а также средства удаленной отладки (x86, x64). Дополнительные сведения см. в блоге группы разработчиков Visual Studio.

Windows SDK: VS 2019 RTM по умолчанию устанавливает Windows 10 October 2018 Update SDK (17763). В качестве дополнительных компонентов можно выбрать старые Windows SDK.

IDE: прочтите этот пост, чтобы узнать о некоторых незначительных улучшениях производительности IDE.

Диалоговое окно «Новый проект». Обратите внимание, что интерфейс запуска и «диалоговое окно нового проекта» значительно изменился в VS 2019. См. эту запись в блоге.

VS 2019 включает новую версию компилятора C/C++ (19.20.27508). Набор инструментов имеет некоторые важные улучшения производительности, времени компиляции и времени компоновки, специально обусловленные игровыми сценариями. Вот список оптимизаций из более ранних превью VS 2019. Чтобы узнать об обновлениях соответствия C++17/C++20, см. этот пост.

Среда выполнения C/C++ (14.20.25708) двоично совместима с VS 2015 с обновлением 3 и VS 2017, что означает, что вы можете безопасно связывать код, созданный с помощью VS 2015 с обновлением 3 или VS 2017, с VS 2019. Подробнее см. в этом сообщении. .

Библиотеки времени выполнения VS 2017 C/C++ включали vcruntime140.dll, msvcp140.dll, msvcp140_1.dll, msvcp140_2.dll, concrt140.dll и vccorlib140.dll. VS 2019 добавляет vcruntime140_1.dll. Для использования OpenMP также требуется vcomp140.dll .

VS 2019 может быть предназначен для Windows 10, Windows 8.1, Windows 7 с пакетом обновления 1 и Windows Vista с пакетом обновления 2. Обратите внимание, что Visual C++ 2019 REDIST не поддерживает Windows 8.0, Windows 7 RTM, Windows Vista RTM, Windows Vista с пакетом обновления 1, Windows XP RTM, Windows XP с пакетом обновления 1 или Windows XP с пакетом обновления 2, поскольку все эти платформы находятся за пределами жизненного цикла поддержки. См. Системные требования для семейства продуктов Visual Studio 2019

OpenMP: Подробнее об экспериментальной поддержке OpenMP 4 SIMD в VS 2019 см. в этом сообщении.

C++20 Параметр /std:c++latest включает поддержку черновых функций C++20, включая частичную поддержку оператора (например, оператора «космического корабля»). Также доступна экспериментальная поддержка модулей.

Обратите внимание, что /std:c++latest теперь несовместим с /clr и /ZW (C++/CX).

Анализ кода C++. См. этот и этот посты, чтобы узнать о последних работах по анализу кода C++ ( /analyze ). Существует также экспериментальная функция анализа в редакторе, которую вы можете попробовать, и некоторые дополнительные функции C++ Core Checker.

Windows XP: сборка для Windows XP с использованием новейшего набора инструментов не поддерживается. Инструменты Поддержка C++ Windows XP для VS 2017 (v141) доступны как отдельный необязательный компонент в установщике VS 2019. При сборке с использованием набора инструментов платформы v141_xp для целевой поддержки Windows XP с пакетом обновления 3 помните, что для этого используется пакет SDK для Windows 7.1A. Старый SDK будет генерировать некоторые предупреждения в системных заголовках с новым набором инструментов, которые необходимо подавлять извне. Дополнительные сведения о разработке DirectX см. в VS 2012 Update 1.

Xbox One XDK: Xbox One XDK не поддерживает набор инструментов VS 2019. Microsoft GDK поддерживает VS 2017 и VS 2019.

GitHub: шаблоны игр Direct3D были обновлены для поддержки VS 2019, а Direct3DUWPGame.vsix теперь поддерживает VS 2015, VS 2017 и VS 2019. Я также добавил проекты VS 2019 в DirectX Tool Kit< /em> для DX11/DX12, DirectXTex, DirectXMesh, UVAtlas, DXUT и Effects11 в выпусках от апреля 2019 г.

Известная проблема: существует известная проблема для VS 2019 RTM/обновление 1/обновление 2 при использовании моих шаблонов проектов игр Direct3D на GitHub. Если у вас также установлен VS 2017, он работает. В противном случае вам нужно отредактировать файл devenv.exe.config . Подробнее см. здесь. Эта проблема исправлена ​​в обновлении 3.

Известная проблема: существует известная проблема с DirectXMath, из-за которой тесты IsNan могут завершиться ошибкой при сборке с /fp:fast из-за новых оптимизаций. Это исправлено при использовании DirectXMath 3.14 в сочетании с обновлением 3.

Урок 1. Настройка DirectX 11 с помощью Visual Studio

Второй инструмент, который вам понадобится, — Windows 10 SDK. Windows 10 SDK содержит все заголовки DirectX 11, библиотеки, библиотеки DLL и т. д., которые вам понадобятся для написания приложений DirectX 11. Если вы установили Visual Studio 2015, пакет SDK уже был установлен вместе с ним. В противном случае вы можете загрузить Windows Standalone SDK для Windows 10 с веб-сайта Windows Dev Center (msdn). После загрузки и установки SDK у вас будут файлы, необходимые для компиляции программ DirectX 11. Вся документация по Windows 10 SDK также находится на веб-сайте Windows Dev Center. Там вы найдете Руководство по программированию Direct3D 11, в котором есть вся документация по DirectX 11, а также некоторые примеры кода.

После установки IDE и SDK вы можете настроить IDE для работы с Windows 10 SDK, чтобы вы могли писать приложения DirectX 11. Обратите внимание, что перед установкой Windows 10 SDK необходимо установить некоторые IDE.

Настройка Visual Studio 2015

В Visual Studio 2015 я использовал следующие шаги:

Сначала вам нужно создать пустой проект Win32, поэтому выберите "Файл" -> "Создать" -> "Проект". В меню «Новый проект» выберите Win32 в разделе «Шаблоны» -> Visual C++ -> Win32. Затем выберите проект Win32 из вариантов. Дайте проекту имя (я назвал свой Engine) и местоположение, а затем нажмите «ОК». Нажмите «Далее», и вам будет предоставлено другое меню. В разделе «Дополнительные параметры» установите флажок «Пустой проект» и снимите флажок «Проверки жизненного цикла разработки безопасности (SDL)». Нажмите «Готово», и теперь у вас должна быть базовая пустая установка проекта Win32.

Затем на верхней панели вы увидите значение "x86" в раскрывающемся списке "Платформы решений", выберите его и вместо этого выберите "x64". Это установит для вашего проекта 64-битную версию вместо 32-битной по умолчанию.

Наша среда разработки DirectX 11 теперь должна быть настроена и готова к написанию приложений DirectX 11.

Выполнение упражнений

<р>1. Кратко ознакомьтесь с Руководством по программированию DirectX 11 на веб-сайте Центра разработки для Windows (msdn).

Но как мне внедрить DirectX SDK в компилятор, чтобы я мог просто включать любые файлы DirectX, как если бы это были стандартные файлы Windows. Например, следующий -- заголовок DirectX


Если вы установили SDK после Visual Studio, он *должен* уже быть настроен.

Вам нужно только:

Если это по-прежнему не работает, вы должны добавить пути включения и библиотеки для каждого проекта (или, если эта функция все еще доступна, добавить их один раз и сохранить их на всю жизнь в так называемом «Листе свойств», но Я не уверен насчет vs12)


Но, как видно из ошибки, которую я прокомментировал, это не работает.


Хм, тогда вам придется настроить каталоги вручную.
Если у вас есть листы свойств в VS12, вам удобно ими пользоваться, это будет тот же процесс, но в другом окне.

В основном вы должны либо в свойствах проекта, либо в глобальных листах свойств добавить записи Include, Lib и Bin для DirectX SDK.

Данный "D3DSDKFolder" является вашей базовой папкой D3D SDK, здесь в C:\Program Files\Microsoft DirectX SDK (версия),

Include = D3DSDKFolder\Include
Lib = D3DSDKFolder\Lib\x64 для 64-разрядной версии, D3DSDKFolder\Lib\x86 для 32-разрядной версии
Bin = D3DSDKFolder\Bin (не обязательно)

Как вы можете видеть, это не сильно отличается от других библиотек, вы просто настраиваете каталоги include и lib, и все готово.
Я не уверен, почему вы также добавили папку Bin, но я также не уверен, почему вы не поместили свою папку Bin.



Я могу сказать, что в VS10, возможно, процедура аналогична:

Шаги:
1. Откройте проект
2. Вид->Менеджер свойств
3. У вас должно получиться древовидное представление, которое выглядит следующим образом:

Заданные вами свойства будут свойствами по умолчанию для всех ваших проектов в конфигурации отладки.

Затем сделайте то же самое в разделе "Выпуск | Win32", чтобы применить изменения к конфигурации выпуска.

Это должен быть ваш экран:

Теперь я выделил некоторые моменты.

Это итальянская версия, но вы сами сможете узнать названия.

Когда вы нажимаете на ПРАВЫЙ столбец (выделено красным), открывается раскрывающийся список параметров, нажав на кнопку (выделено зеленым цветом).

Теперь вы можете добавлять каждую строку для каждой записи, которую хотите добавить, с помощью кнопки "Новая строка" (также CTRL+INS).


Очевидно, что это для VS10.



Все работает! Большое спасибо!!


Подождите, теперь у меня возникают проблемы с "неразрешенными внешними элементами" при использовании таких функций в Direct3D, как D3DXMatrixLookAtLH(. ) и D3DXMatrixRotationY(. ) .

На странице свойств Microsoft.Cpp.Win32.user есть параметры «Исполняемые каталоги», «Включить каталоги», «Справочные каталоги», «Каталоги библиотек», «Каталоги библиотек WinRT», «Исходные каталоги» и «Исключить каталоги».
Я добавил в каталоги Include и Library. Что-то, что мне не хватает здесь, что нужно?


Ну, вы не связываете свой проект с D3Dx9.lib
( )




Ой, подождите. Мне нужно?

Та же ссылка, которую вы разместили чуть выше, говорит, что D3DXMatrixRotationY(. ); имеет требования d3dx9math.h и d3dx9.lib


Нет, он включается из d3dx9.h. И файл правильно включен, так как невключение дает неразрешенный внешний идентификатор, а невключение дает неопределенный/необъявленный идентификатор.



Это очень странно.
Если вы компилируете для 32-разрядной версии, уверены ли вы, что настроили 32-разрядный каталог lib DirectX SDK?

Потому что эта ошибка иногда возникает при компиляции 32-битного исполняемого файла с 64-битной библиотекой.



Знаете ли вы, как посмотреть макросы компоновщика в VS12? Мне просто интересно, если по какой-то причине мой компилятор работает в 32-битном режиме, поэтому ему нужна 32-битная библиотека, а не 64-битная библиотека, которую я ему дал.
Я говорю это, потому что я видел много функций, используемых в качестве макросов для ссылки на «рекомендуемую» функцию, поэтому макрос меняет то, что вы на самом деле используете, в зависимости от других определений.


По умолчанию все проекты компилируются для 32-разрядных машин.

Чтобы скомпилировать для 64-разрядной версии (после этого ваш исполняемый файл НЕ будет подходить для 32-разрядных систем!) перейдите в настройки проекта, Linker->Advanced, Destination Computer и измените "MachineX86" на "MachineX64".

(Это переведено и взято из vs10, как всегда)

Он не использует макросы.


Правильно, спасибо!
И если я не нашел это после небольшого поиска:

Я очень надеюсь, что изменение моих настроек на x64 сработает, но в противном случае я верю, что если я вместо этого свяжусь с библиотекой x86, то мое приложение будет собрано (к сожалению, в 32-разрядной версии, ну что ж, могло быть и хуже).

Читайте также: