Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Проблеммка с Effects11.lib (не линкуется unresolved external symbol _D3DX11CreateEffectFromMemory@20)

Проблеммка с Effects11.lib (не линкуется unresolved external symbol _D3DX11CreateEffectFromMemory@20)

coremissionПостоялецwww2 мар. 201812:02#0
Привет, ребята.

Начал изучать DirectX по книге Фрэнка Луны (DirectX 11) и не могу прилинковать библиотеку с эффектами :(

Вот такая ошибка:
error LNK2019: unresolved external symbol _D3DX11CreateEffectFromMemory@20 referenced in function "private: void __thiscall BoxApp::BuildFX(void)" (?BuildFX@BoxApp@@AAEXXZ)

Код взял тут: https://github.com/jjuiddong/Introduction-to-3D-Game-Programming-With-DirectX11
А библиотеку эффектов тут: https://github.com/Microsoft/FX11/archive/nov2015.zip
На сколько я понял библиотека здесь свежая, а та что лежит в c:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\ очень старая.
Скомпилировал библиотеку в Win32/Debug, положил куда надо, пытаюсь собрать 6й урок Box тоже Win32/Debug и вижу ошибку линкера.

Посмотрел какая функция лежит внутри библиотеки (nm EffectsAPI.obj) а там -  _D3DX11CreateEffectFromMemory@24 (24! а не 20!)

Заголовочный файл d3dx11effect.h в котором она объявлена и в проекте с библиотекой и в проекте с примером одинаковый, я скопировал.
У меня Windows7 sp1, Microsoft Visual Studio Community 2015 Update 3.

Я подозреваю что это связано с версионностью DX Sdk, и проекты из исходников к книге используют файлы из c:\Program Files (x86)\Microsoft DirectX SDK (June 2010)
А библиотека хрен знает откуда. Поэтому разные типы аргументов получаются...
Читал где-то что Direct Sdk теперь включен в Windows SDK с версии 8...

Наверняка здешние профи с этим сталкивались, помогите пожалуйста, я очень застрял.

Изображение

eXmireПостоялецwww4 мар. 201812:15#1
Насколько я понял, ты подсовываешь в проект, использующий одни хедеры, либу, которая была собрана с другими хедерами.
Ошибки линковки - это самые безобидные проблемы, которые ты можешь получить, делая подобную ерунду. В рантайме может быть куда интереснее.
bykabakПостоялецwww4 мар. 201814:00#2
1) У Фрэнка Луны примеры наполовину собранные с участием его библиотек которые собранны на конкретном VS и использовать его примеры нужно только на той VS на которой собраны его библиотеки. ( для начинающих часто сложно это понять )

2) Effects по-моему уже не поддерживаются и нет смысла их учить. Всё это можно написать без Effects  ( по-моему тратите время на уже не используемую технологию , что-то вроде как учить сейчас DX9 вместо DX12 )

Примеры лучше брать у  https://www.braynzarsoft.net/old/index.php?p=DX11Lessons ( у парня есть архив с проектами SLN и исходниками по всем урокам )  или  http://rastertek.com/tutdx11.html

Правка: 4 мар. 2018 14:07

coremissionПостоялецwww4 мар. 201821:57#3
С проблеммкой разобрался :) В Хедере заголовочный файл из winsdk брался, поправил пару дефайнов и заставил брать d3d11 из папочки как в книге.

Effects ведь просто небольшая библиотечка с открытым исходным кодом, на сколько я понимаю. Очень удобно в одном файле описывать и вершинный шейдер и техники и пассы, какая альтернатива есть? DX12 я пока не хочу и не могу - нужно 10ку поставить для этого :(

Спасибо за ссылочки с примерами :)

bykabakПостоялецwww4 мар. 201822:29#4
Альтернатива - писать все настройки pipeline не в текстовом файле эффекта, а в вашем приложении через команды DX11.  Получится гибче. И в будущем ваш код будет проще перенести на DX12.

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр