| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Ошибка с подключением хэдера |
| Автор: Nikitozz 12.6.2008, 10:56 |
| Такая проблема. Установил DirectX 9 учусь рисовать. рисовал просто треугольник все работает потключал <d3d9.h> нормально работает решил нарисовать трехмерную мадель с использованием матриц подключаю <d3dx9.h> - пишет нет такого файла, хотя все там есть смотрел библеотеки подключил d3d9.lib и d3dx9.lib не могу понять в чем проблема, может поможете? |
| Автор: Graf_h 12.6.2008, 11:19 |
| Можно посмотреть ошибки? |
| Автор: Nikitozz 12.6.2008, 11:22 | ||
Вот весь код:
Compiling... MatrixKvadrat.cpp c:\visual studio 2008\projects\urok6\urok6\matrixkvadrat.cpp(3) : fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory Build log was saved at "file://c:\Visual Studio 2008\Projects\Urok6\Urok6\Debug\BuildLog.htm" Urok6 - 1 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== |
| Автор: konekt 12.6.2008, 12:48 |
| А ты в настройках VC++2008 указывал директории подключаемых файлов? Путь к d3dx9.h. |
| Автор: Nikitozz 12.6.2008, 13:54 | ||
Этого я не делал, а где можно указать путь? |
| Автор: konekt 12.6.2008, 15:16 |
| Tools|Options|Projects and Solution|VC++ Directories далее В окне Show Directories for выбираешь Include files затем на кнопку New Line и указываешь путь к директории DirectX-Include (где у тебя должен быть зарыт D3DX9.H) Затем в Show Directories for выбираешь Lib files затем New Line и указываешь путь к DirectX-Lib файлам. Вообщем, указываешь VC++ Куда ты поставил DirectX SDK. Кстати, я запустил твой фаил, правда, пришлось исправить пару ошибок (забыл поставить } и не правильно указал имя функции Direct API. Но кроме пустого черного окна ничего не увидел. Если разберешься в чем тут дело - напиши. |
| Автор: Graf_h 12.6.2008, 16:15 | ||
Можеш просто указать в include:
Где вместо path пишеш тот путь, где лежать твои хедеры |
| Автор: konekt 12.6.2008, 16:38 | ||
Так конечно тоже можно. Но всеже, почему кроме пустого черного окна ничего нет. Вроде должен быть цветной примитивчик. |
| Автор: Nikitozz 12.6.2008, 16:42 |
| Попробовал через Options подключить, выдает кучу ошибок, указал путь - работает. Исправил другие ошибки... Компилит нормально, теперь при линковке ошибка: ------ Build started: Project: Urok6, Configuration: Debug Win32 ------ Linking... MatrixKvadrat.obj : error LNK2019: unresolved external symbol __imp__timeGetTime@0 referenced in function "void __cdecl Matrix(void)" (?Matrix@@YAXXZ) C:\Visual Studio 2008\Projects\Urok6\Debug\Urok6.exe : fatal error LNK1120: 1 unresolved externals Build log was saved at "file://c:\Visual Studio 2008\Projects\Urok6\Urok6\Debug\BuildLog.htm" Urok6 - 2 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Должен получится квадрат с разноцветными вершинами, вращающийся по оси Y |
| Автор: konekt 12.6.2008, 21:11 |
| Попробуй подключить winmm.lib У меня все линкуется, только, опять повтоюсь, ничего не выводится на экран. Я даже из тутора по директу запускаю пример - должен быть цветной треугольник, а у меня белый. Бьюсь над этой проблемой уже 4 часа. Ты писал, что запускал прогу с треугольником. У тебя он цветной получился? |
| Автор: Nikitozz 12.6.2008, 22:43 | ||
| без матрици когда делал, просто прорисовал все получалось, желтый фон и цветной квадрат был. сейчас у меня просто черное окно появляется. буду искать ошибку Спасибо за подсказку насчет либа Добавлено через 13 минут и 49 секунд Нашел первую ошибку в функции InitialDirect3D() return S_OK; надо в самый конец поставить, получится вот так
Добавлено через 14 минут и 59 секунд только теперь этот квадрат растянут на все окно... буду искать дальше |
| Автор: konekt 13.6.2008, 09:24 |
| Спасибо за найденную ошибку. Вижу цветастое окно. Возможно проблема в инициализации матрицы вида либо word. Есть другой пример в котором куб вращается очень хорошо (из тутора по Direct) есть еще один из учебника, но там кубик ооооочень маленький и если не знаешь что это куб и что он должен вращаться, то не догадаешься. Правда отрисовка происходит в сообщении WM_PAINT. Так вод там, если химичить с камерами, то можно чтото рассмотреть. А так в Direct я застрял именно на этом и не могу дальше сдвинуться. |
| Автор: konekt 13.6.2008, 15:40 |
| Все работает!!! Ошибку нашел. В функции VOID RenderingDirect3D() не указан вызов функции Matrix(). |
| Автор: Nikitozz 13.6.2008, 16:14 |
| Точно блин!!! теперь буду куб пробовать сделать |