PDA

View Full Version : [C++] Dev-C++ & SDL


Ethoel
10-04-2008, 13:54
Ho un problemino, quando vado a compilare mi esce questa scritta:
[Linker error] undefined reference to `__cpu_features_init'
ld returned 1 exit status
C:\****\Makefile.win [Build Error] [GAME_ONE.exe] Error 1



Che vuol dire sta cosa?

wizard1993
10-04-2008, 14:56
la sfero di cristallo non mi è stata fornita, posta il codice e se vuoi un mio consiglio, cambia ide

71104
10-04-2008, 17:21
la sfero di cristallo non mi è stata fornita, posta il codice e se vuoi un mio consiglio, cambia ide :rotfl: grande

Ethoel
10-04-2008, 18:47
Complimenti per la battuta :stordita:

Ecco il codice:

file #1: GAME.h

void Inizializza_engine(int risoluzione_x, int risoluzione_y, int colori, int modalita);
void posiziona (SDL_Surface *immagine, int pos_x, int pos_y);
void posiziona(SDL_Surface *immagine, int pos_x, int pos_y, int frames[5], int n_fotogrammi);
void trasparenza(SDL_Surface *immagine, int rosso, int verde, int blu);
void aggiorna();
void cancella();
void finalizza();
void libera_memoria(SDL_Surface *immagine);


file#2: GAME2.h

#include <iostream>
#include <stdlib.h>
#include <sdl\SDL.h>
#include "GAME.h"

SDL_Surface *screen;

void Inizializza_engine(int risoluzione_x, int risoluzione_y, int colori, int modalita){
if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)<0){
printf("Errore nell'inizializzazione dell'engine: %*s\n", SDL_GetError());
exit(1);
}
if(modalita==0)
screen=SDL_SetVideoMode(risoluzione_x, risoluzione_y, colori, SDL_HWSURFACE | SDL_DOUBLEBUF);
if(modalita==1)
screen=SDL_SetVideoMode(risoluzione_x, risoluzione_y, colori, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
}

void posiziona(SDL_Surface *immagine, int pos_x, int pos_y)
{
SDL_Rect destinazione;
destinazione.x=pos_x;
destinazione.y=pos_y;
SDL_BlitSurface(immagine, NULL, screen, &destinazione);
}

void posiziona(SDL_Surface *immagine, int pos_x, int pos_y, int frames[5], int n_fotogrammi){
if(n_fotogrammi>frames[4])n_fotogrammi=0;
SDL_Rect destinazione;
destinazione.x=pos_x;
destinazione.y=pos_y;
SDL_Rect fotogramma;
fotogramma.x= frames[0] + frames[2]*n_fotogrammi;
fotogramma.y= frames[1];
fotogramma.w= frames[2];
fotogramma.h= frames[3];
SDL_BlitSurface(immagine, &fotogramma, screen, &destinazione);
}

void trasparenza(SDL_Surface *immagine, int rosso, int verde, int blu){
Uint32 colore_trasparente = SDL_MapRGB(immagine->format, rosso, verde, blu);
SDL_SetColorKey(immagine, SDL_SRCCOLORKEY|SDL_RLEACCEL, colore_trasparente);
}

void aggiorna(){
SDL_Flip(screen);
}
void cancella(){
SDL_FillRect(screen, 0, 0);
}
void finalizza(){
SDL_Quit();
}


file #3: main.cpp

#include <iostream>
#include <stdlib.h>
#include <sdl\SDL.h>
#include <windows.h>
#include "GAME2.h"

using namespace std;

int risoluzione_x=640;
int risoluzione_y=480;
int bit_colori=32;
int modalita=0; // 0= modalità finestra // 1= modalità schermo intero

SDL_Surface *sfondo;

int main(int argc, char *argv[]){

Inizializza_engine(risoluzione_x, risoluzione_y, bit_colori, modalita);
sfondo=SDL_LoadBMP("sfondo.bmp");
while (GetAsyncKeyState(VK_ESCAPE)==0){
cancella();
posiziona(sfondo, 0, 0);
aggiorna();
}
finalizza();
return 0;
}

-Slash
10-04-2008, 19:54
anche io ho lo stesso problema. lo da con qualsiasi cosa provi a compilare...

lo so che il dev fa schifo ed infatti uso eclipse e code::blocks, ma all'uni il prof ci fa usare questo