Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Unresolved, overloaded...

Ostatnio zmodyfikowano 2010-04-22 16:50
Autor Wiadomość
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:
C/C++
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:
C/C++
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
P-16273
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ę.
P-16274
jimmye
Temat założony przez niniejszego użytkownika
» 2010-04-21 19:49:09
~EDIT: oto kod razem z błędami:
C/C++
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()
{
    // Render graphics
    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;
   
    // We update the GUI and take an action if
    // one of the menu items was selected
    id = gui->Update( dt );
    // Process keys
    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 ===|
P-16275
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.
P-16282
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...
P-16287
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...
P-16288
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ę.
P-16294
jimmye
Temat założony przez niniejszego użytkownika
» 2010-04-22 16:47:37
Już sobie poradziłem.

Spierajcie się dalej XD
P-16296
« 1 » 2
  Strona 1 z 2 Następna strona