| Другое > Hard'n'Soft |
| Проблемочка с компиляцией HGE [спрайты] |
| (1/1) |
| Гламурная киса:
Вот заготовка для вывода спрайта: --- Код: ---#include <hge.h> #include <hgeSprite.h> hgeSprite *sprite; HGE *hge = 0; HTEXTURE tex; bool FrameFunc() { if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true; return false; } /*bool RenderFunc() { hge->Gfx_BeginScene(); hge->Gfx_Clear(0); sprite->Render(49,49); hge->Gfx_EndScene(); return false; }*/ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { hge = hgeCreate(HGE_VERSION); hge->System_SetState(HGE_FRAMEFUNC, FrameFunc); hge->System_SetState(HGE_TITLE, "HGE Tutorial 01 - Minimal HGE application"); hge->System_SetState(HGE_WINDOWED, true); hge->System_SetState(HGE_USESOUND, false); tex=hge->Texture_Load("ball.png"); sprite = new hgeSprite(0,0,0,500,500); sprite->SetBlendMode(BLEND_DEFAULT); sprite->SetTextureRect(0,0,50,50,false); if(hge->System_Initiate()) { hge->System_Start(); } else { MessageBox(NULL, hge->System_GetErrorMessage(), "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL); } hge->System_Shutdown(); hge->Release(); return 0; } --- Конец кода --- и компилятор почему-то ругается на строчку --- Цитата ---sprite = new hgeSprite(0,0,0,500,500); --- Конец цитаты --- :'( вот что в журнале компиляции: --- Код: ---C:\Users\ALKO\Desktop\hernya\khren\main.cpp|31|und efined reference to `hgeSprite::hgeSprite(unsigned long, float, float, float, float)'| --- Конец кода --- :blush: Компилятор Code Blocks, hge.lib и хэдеры настроены в build options. C использованием hgeQuad выводил спрайты - нормально, но громоздко в написании кода. :-\ Подскажите, как мне откомпилировать без ошибок? |
| madmonkey:
там еще hgehelp.lib есть какбы |
| Гламурная киса:
и? :? hgehelp.lib отсутствовал в папке для компилятора gcc, ну я туда перетащил с папки для VC - результат тот же. |
| madmonkey:
слинковать ее надо, а не просто перенести. и я бы пересобрал либы. |
| Гламурная киса:
ну так в код-блоксе вроде указал директорю для линкера. --- Цитата: Гламурная киса от 13 Ноябрь 2011, 21:29:00 --- в build options. --- Конец цитаты --- или компоновщик где-то отдельно находится в виде exe ? |
| madmonkey:
build options - linker settings - туда добавить |
| Гламурная киса:
Туда я тоже добавлял. Всё та же ошибка - undefined reference to hgeSprite Добавлено позже: в целом инициализация двигателя пашет. если закоментировать этот участок: --- Код: ---sprite = new hgeSprite(0,0,0,500,500); sprite->SetBlendMode(BLEND_DEFAULT); sprite->SetTextureRect(0,0,50,50,false); --- Конец кода --- И sprite = new hgeSprite(tex,0,0,500,500); тоже пробовал прописАть - всё та же фигня... Я уже вторую неделю парюсь с этими спрайтами ^_^ Сперва хотел на XNA залобать что-нибудь...НО, ему нужна именно определённая версия фреймворка, и я передумал. |
| HoRRoR:
В Include path компилятора добавил папку с хидерами? |
| Гламурная киса:
да. Я с самого начала руководствовался данной инструкции http://hge-blog.ru/272_urok-10-podklyuchenie-hge-k-codeblocks |
| madmonkey:
выкидываем инструкцию и включаем голову. hgeSprite находится в hgehelp, для гцц прекомпиленной библиотеки нет(да и не нужна она). компилим библиотеку, линкуем. можно просто hgeSprite.cpp в проект добавить. |
| Гламурная киса:
Хммм...я добавил к проекту этот сипипи файл, на что компилятор начал ругаться примерно такой бранью: --- Код: ---||=== khren, Debug ===| obj\Debug\hge\hge181\src\helpers\hgesprite.o(.text+0x8a1)||In function `ZNK9hgeSprite16GetBoundingBoxExEfffffP7hgeRect':| C:\Users\ALKO\Desktop\hge\hge181\src\helpers\hgesprite.cpp|171|undefined reference to `hgeRect::Encapsulate(float, float)'| obj\Debug\hge\hge181\src\helpers\hgesprite.o(.text+0x8d6):C:\Users\ALKO\Desktop\hge\hge181\src\helpers\hgesprite.cpp|172|undefined reference to `hgeRect::Encapsulate(float, float)'| obj\Debug\hge\hge181\src\helpers\hgesprite.o(.text+0x90b):C:\Users\ALKO\Desktop\hge\hge181\src\helpers\hgesprite.cpp|173|undefined reference to `hgeRect::Encapsulate(float, float)'| obj\Debug\hge\hge181\src\helpers\hgesprite.o(.text+0x940):C:\Users\ALKO\Desktop\hge\hge181\src\helpers\hgesprite.cpp|174|undefined reference to `hgeRect::Encapsulate(float, float)'| obj\Debug\hge\hge181\src\helpers\hgesprite.o(.text+0x961):C:\Users\ALKO\Desktop\hge\hge181\src\helpers\hgesprite.cpp|178|undefined reference to `hgeRect::Encapsulate(float, float)'| obj\Debug\hge\hge181\src\helpers\hgesprite.o(.text+0x980):C:\Users\ALKO\Desktop\hge\hge181\src\helpers\hgesprite.cpp|179|more undefined references to `hgeRect::Encapsulate(float, float)' follow| ||=== Build finished: 6 errors, 0 warnings ===| --- Конец кода --- Я дествовал так : нажал project -> add files и выбрал тот злосчастный файл,может помимо этого ещё что-то нужно сделать. |
| Гламурная киса:
yeahh! :cool: Скомпилировал при помощи Dev cpp. Теперь отображается белое поле для текстуры спрайта, а самого спрайта на нём нету. В чём тут ошибка? Функцию рендера( RenderFunc()) раскоментировал Конструктор спрайта таков sprite = new hgeSprite(tex,0,0,500,500) Ну и загрузка текстуры так описана tex=hge->Texture_Load("ball.png"); (файл в каталоге присутствует) Добавлено позже: Ай....это я натупил просто. :blush: Надо было грузить текстуру спрайта после условия проверки удачной инициализации движка. Спасибо за внимание, теперь всё пашет. |
| Навигация |
| Главная страница сообщений |