Итак, я изучаю DirectX 11 и пробовал код BoxDemo от Фрэнка Д. Луны Введение в Direct3D. Но я получаю следующую ошибку Linker:
Effects11.lib(EffectAPI.obj): ошибка LNK2001: неразрешенный внешний символ D3DCompileFromFile
Я слышал, что мне нужно создать Effects11.lib в режиме выпуска и отладки. И я тоже сосать это тоже. Я сделал это в папке Samples\C++\Effects11 \. Открыл решение в VS2012 и построил его, получив Effects11.lib в Release, а также в режиме Debug. Переименован debug один Effects11d.lib. Поместили обе библиотеки в папку проекта и добавили их в Linker-> Input-> Additional Dependencies. Моя целевая платформа - x64, и мой каталог include в настоящее время также указывает на directx include и lib каталог.
Так в чем моя проблема? Почему Effects11.lib не может быть найден компилятором? Правильно ли я это делаю? Пожалуйста, помогите мне. Заранее спасибо
Edit: Так моя проблема может быть с d3dcompiler.lib. Но я уже добавил d3dcompiler.lib в Linker->. Но при создании Effects11.lib мне тоже нужно добавить d3dcompiler.lib?
Попробуйте связать Effects11.lib в режиме деблокирования и Effects11d.lib в режиме отладки. Писатель Фрэнк Д Луна использовал путь по умолчанию, который использовал, и работал для меня. И другие пути не сработали для меня. Все еще не уверен
Проблема не в том, что Effects11.lib не может быть найден. Компилятор говорит вам, что символ из Effects11.lib (в данном случае D3DCompileFromFile) не может быть найден во время ссылки.
Вам необходимо связать библиотеку, содержащую D3DCompileFromFile, которая, как представляется, является D3dcompiler.lib, в соответствии с http://msdn.microsoft.com/en-us/library/windows/desktop/hh446872.aspx.