jimmye Temat założony przez niniejszego użytkownika |
Unresolved, overloaded... » 2010-04-21 19:38:53 Otóż mam pewien problem z używaniem funkcji silnika HGE w klasach. Przypisuję funkcję renderującą do silnika HGE: hge->System_SetState( HGE_RENDERFUNC, RenderFunc ); Deklaracja Klasy: class Game { public: bool RenderFunc(); private: HGE * hge; hgeFont * font; hgeGUI * gui; };
Przy tej deklaracji mam błąd "unresolved overloaded function type" dotyczący tej funkcji, więc deklaruję tak: static bool RenderFunc();
Funkcja używa obiektów hge font i gui, więc je też deklaruję jako static. Przy następnej kompilacji nie ma już tego błędu, ale podczas linkowania pojawia się błąd "undefined reference" dotyczący zadeklarowanych wyżej obiektów, które używane są w funkcji RenderFunc(). Nie wiem już jak mam to zadeklarować, więc proszę o pomoc. Z góry dzięki. x.x |
|
DejaVu |
» 2010-04-21 19:43:36 unresolved == funkcja nie posiada defninicji == nie dołączyłeś biblioteki (linker się kłania) lub nie utworzyłeś definicji funkcji, a istnieje deklaracja i próbujesz wywołać tą funkcję. |
|
jimmye Temat założony przez niniejszego użytkownika |
» 2010-04-21 19:49:09 ~EDIT: oto kod razem z błędami: class Game { public: Game(); ~Game(); static bool RenderFunc(); static bool FrameFunc(); void Connect(); private: static HGE * hge; static hgeFont * font; static hgeGUI * gui; NetworkManager NetMan; }; bool Game::RenderFunc() { hge->Gfx_BeginScene(); hge->Gfx_Clear( 0 ); font->printf( 5, 5, HGETEXT_LEFT, "dt:%.3f\nFPS:%d (constant)", hge->Timer_GetDelta(), hge->Timer_GetFPS() ); gui->Render(); hge->Gfx_EndScene(); return false; }
bool Game::FrameFunc() { float dt = hge->Timer_GetDelta(); int id; id = gui->Update( dt ); if( hge->Input_GetKeyState( HGEK_ESCAPE ) ) return true; return false; } .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| more undefined references to `Ankle::Game::hge' follow| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::font'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::gui'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::gui'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| .objs\src\game.o:game.cpp|| undefined reference to `Ankle::Game::hge'| ||=== Build finished: 15 errors, 0 warnings ===|
|
|
DejaVu |
» 2010-04-22 11:36:41 Jak już pisałem nie zlinkowałeś biblioteki HGE. Wklejenie Twojego kodu nic nie zmienia ponieważ on się kompiluje tyle, że nie ma definicji funkcji, które należy dostarczyć poprzez dołączenie biblioteki HGE z rozszerzeniem *.lib (visual) albo *.a (gcc) za pomocą linkera. |
|
Elaine |
» 2010-04-22 14:16:09 z rozszerzeniem *.lib (visual) albo *.a (gcc) |
Co ma rozszerzenie do formatu pliku? Linkera rozszerzenie nie interesuje, tylko format... |
|
jimmye Temat założony przez niniejszego użytkownika |
» 2010-04-22 14:16:41 Hmm, biblioteki mam dołączone :| bo robiłem już przykładowe programy nie używając klas (wzsystko było wtedy dobrze). Zaraz jeszcze sprawdzę kod, może coś pominąłem... |
|
DejaVu |
» 2010-04-22 15:55:24 z rozszerzeniem *.lib (visual) albo *.a (gcc) | Co ma rozszerzenie do formatu pliku? Linkera rozszerzenie nie interesuje, tylko format... |
Czepiasz się. |
|
jimmye Temat założony przez niniejszego użytkownika |
» 2010-04-22 16:47:37 Już sobie poradziłem.
Spierajcie się dalej XD |
|
« 1 » 2 |