Другое > 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:
Надо было грузить текстуру спрайта после условия проверки удачной инициализации движка.
Спасибо за внимание, теперь всё пашет.
Навигация
Главная страница сообщений

Перейти к полной версии