Переход с D3DX, D3DCompile не найден

до сих пор я успешно переходил с устаревших библиотек D3DX на новые, но с функцией D3DX11CompileFromFile я должен использовать новую D3DCompileFromFile. MSDN говорит, что заголовочный файл — D3DCompiler.h, а файл lib — D3DCompiler.lib. Intellisense подбирает два, один из

C:\Program Files (x86)\Microsoft DirectX SDK (июнь 2010 г.)\Lib\x64

а другой из

C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64

введите здесь описание изображения

Если кто-нибудь знает, почему это происходит, я был бы признателен за помощь. Я также попытался изменить порядок некоторых из них. Спасибо.


person Zebrafish    schedule 26.04.2016    source источник
comment
вам, вероятно, нужно изменить пути include/library вашего проекта и удалить ссылки на DXSDK за июнь 2010 года. Тот, что в шапке от июня 2010 года, не содержит D3DCompileFromFile, только D3DCompile.   -  person MuertoExcobito    schedule 27.04.2016
comment
Бинго, удаление всех ссылок на SDK за июнь 2010 сработало, теперь мне просто нужно все изменить. Итак, ВСЕ в июньском SDK устарело, и я должен использовать включения и библиотеки из папки Windows Kit?   -  person Zebrafish    schedule 27.04.2016


Ответы (1)


В идеале вы полностью удаляете пути DirectX SDK (июнь 2010 г.) и просто используете заголовок D3DCompile в Windows 8.1 SDK.

Если вам необходимо использовать устаревший DirectX SDK (июнь 2010 г.), вы помещаете эти пути include и lib после Windows 8.1 SDK. В основном это работает, но есть сложности с более низким уровнем XAudio 2.7. См. Zombie DirectX SDK. все детали.

Устаревшая копия DirectX SDK d3dcompiler.h не имеет разновидности FromFile, которая была добавлена ​​для версии Windows 8.x SDK. В Windows 8.1 или Windows 10 D3DCompiler_47.DLL является частью ОС, но если вы хотите работать в Windows 7, вам необходимо развернуть DLL с вашим приложением, которое вы можете просто скопировать из $(WindowsSdkDir)redist\d3d\<arch>\D3DCompile*.DLL. См. раздел HLSL, FXC и D3DCompile.

person Chuck Walbourn    schedule 27.04.2016