Dani88
26-03-2008, 11:41
###############################################################
PROBLEMA LINKER RISOLTO (VEDI PIU' GIU' PER IL PROBLEMA SCRITTO NEL TITOLO ) #################################################################
Raga avrei bisogno di aiuto: quando vado a compilare il seguente codice
#include "allegro.h"
// ----------------------------- dichiarazione variabili ------------------------------
BITMAP *buf,*sprite;
PALETTE colori; // in colori andrà inserito il valore della profondità di colore
int w,h;
//--------------------------------------------------------------------------------------
class Video{ //contiene tutti i metodi per la rappresentaz a video
public:
Video();
~Video(){destroy_bitmap(buf);}
/// w=wide, h=height dimensioni finestra
void InitDisplay(int disp,int w, int h){ /*inizializza la parte grafica
ATTENZIONE: w e h devono essere dichiarate
come variabili globali*/
set_color_depth(disp);
set_palette(colori);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, w, h, 0, 0);
buf = create_bitmap(w, h);
clear(buf);
}
void DB(int w,int h){ //doppio buffer
vsync();
blit(buf, screen, 0, 0, 0, 0, w, h);
clear(buf);
}
};
class Sprite{
int x,y;
public:
Sprite(int setx,int sety){sprite = load_bmp("pacstop.bmp",colori);x=setx; y=sety;}
~Sprite(){destroy_bitmap(sprite);}
int Getx(){return x;}
int Gety(){return y;}
void Mostra(){draw_sprite(buf,sprite,Getx(),Gety());}
void Move(){
if (key[KEY_UP]){y-=1;if(y<=0)y=0;}
if (key[KEY_DOWN]){y+=1;if(y>=h)y=h;}
if (key[KEY_LEFT]){x-=1;if(x<=0)x=0;}
if (key[KEY_LEFT]){x+=1;if(x>=w)x=w;}
}
};
//
//
//------------------------------------------------------------
//INIZIO PROGRAMMA MAIN
void main(){
allegro_init();
install_keyboard();
//--------------------- SPAZIO PER ISTANZIARE GLI OGGETTI ---------------------
Video MainGame; //inizializzo un oggetto di tipo Video chiamo MainGame
Sprite Player(200,200); //istanzio un oggetto tipo Sprite nella posiz 200,200
//-----------------------------------------------------------------------------
//
//----------------- EVENTUALE INIZIALIZZAZ VARIABILI --------------------
w=640;h=480;
//ho impostato le dimensioni della finestra
//-----------------------------------------------------------------------
MainGame.InitDisplay(32,w,h);
//------------------------- CARICA IMG E SPRITE -------------------------
// forse superfluo xkè si fa con i metodi di classe
//-----------------------------------------------------------------------
//------------------------- INIZIO CICLO WHILE CHE SI RIPETE------------------------
while (!key[KEY_ESC]) {
MainGame.DB(w,h); /* inserisco qui la procedutra creata precedentemente per la
visualizzazione schermo 'doppiobuffering();' */
Player.Move();
Player.Mostra();
}
//---------------------------------------------------------------------------
// DISTRUZIONE DI TUTTE LE IMG PRESENTI IN MEMORIA
Player.~Sprite();
MainGame.~Video();
//--------------------------------------------------------------------------
}END_OF_MAIN();
il linker mi dice:
Error 1 error LNK2019: unresolved external
symbol "public: __thiscall Video::Video(void)" (??0Video@@QAE@XZ) referenced in
function "void __cdecl _mangled_main(void)" (?_mangled_main@@YAXXZ) prova
object oriented.obj
Non riesco a capire cosa c'è che non va :( . Un'altra cosa, così la prox volta magari riesco a capire: come va interpretato il messaggio sopra del linker? Cioè gli manca qualcosa?
Grazie a tutti :D
PROBLEMA LINKER RISOLTO (VEDI PIU' GIU' PER IL PROBLEMA SCRITTO NEL TITOLO ) #################################################################
Raga avrei bisogno di aiuto: quando vado a compilare il seguente codice
#include "allegro.h"
// ----------------------------- dichiarazione variabili ------------------------------
BITMAP *buf,*sprite;
PALETTE colori; // in colori andrà inserito il valore della profondità di colore
int w,h;
//--------------------------------------------------------------------------------------
class Video{ //contiene tutti i metodi per la rappresentaz a video
public:
Video();
~Video(){destroy_bitmap(buf);}
/// w=wide, h=height dimensioni finestra
void InitDisplay(int disp,int w, int h){ /*inizializza la parte grafica
ATTENZIONE: w e h devono essere dichiarate
come variabili globali*/
set_color_depth(disp);
set_palette(colori);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, w, h, 0, 0);
buf = create_bitmap(w, h);
clear(buf);
}
void DB(int w,int h){ //doppio buffer
vsync();
blit(buf, screen, 0, 0, 0, 0, w, h);
clear(buf);
}
};
class Sprite{
int x,y;
public:
Sprite(int setx,int sety){sprite = load_bmp("pacstop.bmp",colori);x=setx; y=sety;}
~Sprite(){destroy_bitmap(sprite);}
int Getx(){return x;}
int Gety(){return y;}
void Mostra(){draw_sprite(buf,sprite,Getx(),Gety());}
void Move(){
if (key[KEY_UP]){y-=1;if(y<=0)y=0;}
if (key[KEY_DOWN]){y+=1;if(y>=h)y=h;}
if (key[KEY_LEFT]){x-=1;if(x<=0)x=0;}
if (key[KEY_LEFT]){x+=1;if(x>=w)x=w;}
}
};
//
//
//------------------------------------------------------------
//INIZIO PROGRAMMA MAIN
void main(){
allegro_init();
install_keyboard();
//--------------------- SPAZIO PER ISTANZIARE GLI OGGETTI ---------------------
Video MainGame; //inizializzo un oggetto di tipo Video chiamo MainGame
Sprite Player(200,200); //istanzio un oggetto tipo Sprite nella posiz 200,200
//-----------------------------------------------------------------------------
//
//----------------- EVENTUALE INIZIALIZZAZ VARIABILI --------------------
w=640;h=480;
//ho impostato le dimensioni della finestra
//-----------------------------------------------------------------------
MainGame.InitDisplay(32,w,h);
//------------------------- CARICA IMG E SPRITE -------------------------
// forse superfluo xkè si fa con i metodi di classe
//-----------------------------------------------------------------------
//------------------------- INIZIO CICLO WHILE CHE SI RIPETE------------------------
while (!key[KEY_ESC]) {
MainGame.DB(w,h); /* inserisco qui la procedutra creata precedentemente per la
visualizzazione schermo 'doppiobuffering();' */
Player.Move();
Player.Mostra();
}
//---------------------------------------------------------------------------
// DISTRUZIONE DI TUTTE LE IMG PRESENTI IN MEMORIA
Player.~Sprite();
MainGame.~Video();
//--------------------------------------------------------------------------
}END_OF_MAIN();
il linker mi dice:
Error 1 error LNK2019: unresolved external
symbol "public: __thiscall Video::Video(void)" (??0Video@@QAE@XZ) referenced in
function "void __cdecl _mangled_main(void)" (?_mangled_main@@YAXXZ) prova
object oriented.obj
Non riesco a capire cosa c'è che non va :( . Un'altra cosa, così la prox volta magari riesco a capire: come va interpretato il messaggio sopra del linker? Cioè gli manca qualcosa?
Grazie a tutti :D