2016-04-26 6 views
0

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

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

, а другой из

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

enter image description here

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

+1

, вам, вероятно, необходимо изменить пути к проекту/библиотеки и удалить ссылки на июнь 2010 DXSDK. Один из заголовков в июне 2010 года не содержит D3DCompileFromFile, только D3DCompile. – MuertoExcobito

+0

Бинго, удалив все ссылки на SDK июня 2010 года, теперь мне просто нужно все изменить. Итак, ВСЕ в июньском SDK устарели, и я должен использовать включенные и библиотеки из папки Windows Kit? – Zebrafish

ответ

1

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

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

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