Problema con SDL

Iniciado por GhostLT, 9 Octubre 2010, 20:05 PM

0 Miembros y 1 Visitante están viendo este tema.

GhostLT

Hola amigos, estoy intentando iniciar con la programacion de videojuegos, me encuentro en la carga del sistema de video pero haciendo pruebas este codigo me muestra un error que no entiendo:

Este es el error:
In function `SDL_main':|
error: number of arguments doesn't match prototype|

haciendome referencia a este header

SDL_main.h|57|error: prototype declaration|

/** The prototype for the application's main() function */
extern C_LINKAGE int SDL_main(int argc, char *argv[]);


Acá dejo el Código
// Creación de un degradado parcial, estableciendo un área de clipping
#include <stdio.h>
#include <SDL.h>


int main()               //<------- Aqui es donde me marca el error
{
SDL_Surface *pantalla, *color_base;
SDL_Rect posicion, clipping;
SDL_Event evento;
int i;
// Iniciamos el subsistema de video SDL
if( SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr, "No se pudo iniciar SDL: %s\n",SDL_GetError());
exit(1);
}
// Establecemos el modo de video
pantalla = SDL_SetVideoMode(640, 500, 24,SDL_HWSURFACE|SDL_DOUBLEBUF);
if(pantalla == NULL) {
fprintf(stderr, "No se pudo establecer el modo de video:%s\n",SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
// Cargamos la imagen del personaje principal
color_base = SDL_LoadBMP("ima.bmp");
if(color_base == NULL) {
fprintf(stderr, "No se pudo cargar la imagen: %s\n",SDL_GetError());
exit(1);
}
// Establecemos el área de clipping
clipping.x = 0;
clipping.y = 0;
clipping.h = 500;
clipping.w = 100;
SDL_SetClipRect(pantalla, &clipping);
// Vamos a dibujar 10 tiras
for(i = 1; i <= 50; i++) {
// Ajustamos las propiedades del canal alpha para las transparecnias
SDL_SetAlpha(color_base, SDL_SRCALPHA|SDL_RLEACCEL, i * 5.1);
// Establecemos donde vamos a dibujar las tiras
posicion.x = 0;
posicion.y = 10 * (i - 1);
posicion.w = color_base->w;
posicion.h = color_base->h;
// Copiamos la imagen en la superficie principal
SDL_BlitSurface(color_base, NULL, pantalla, &posicion);
}
// Mostramos la pantalla "oculta" del búffer
SDL_Flip(pantalla);
// Liberamos los recursos que no necesitamos
SDL_FreeSurface(color_base);
// Ahora mantenemos el resultado en pantalla
// hasta cerrar la ventana
for(;;) {
while(SDL_PollEvent(&evento)) {
if(evento.type == SDL_QUIT) // Si es de salida
return 0;
}
}
}


espero y me puedan ayudar para no morir en el intento, Gracias
There is some fiction in you truth, and some truth in you fiction

Beakman

Te falta la SDL_image, para cargar las imágenes y esas cosas, igual ese no puede ser el error porque te saltaría otra cosa.
Intenta compilar un programa simple como:
Código (cpp) [Seleccionar]

#include<iostream>
#include<SDL/SDL.h>
using namespace std;
int main()
{
   return 0;
}

Y te fijas que te dice.

Pusiste <SDL.h>
Casi siempre las librerías las tenes en "<SDL/...etc"
Fijate bien como lo tenes.

Pero el error no esta en el programa.

GhostLT

Con respecto a <SDL.h> me funciona de esta manera bien,

Ademas ya agregue:
<SDL_image.h>

Y modifique
main(int argc, char *argv[]);

Ya no me marco errores pero al correr no aparece la ventana de SDL (se queda colgado), solo me aparece la ventana del prompt con fondo negro  :-\



There is some fiction in you truth, and some truth in you fiction

anonimo12121

#3
Prueba haber si te va esto .
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
using namespace std;
SDL_Surface *screen;
SDL_Event evento;
Uint8 *tecla;
float tiempo;

int main(int argc,char *argv[]){
    SDL_Init(SDL_INIT_VIDEO);
    screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
    SDL_WM_SetCaption("App1",0);
    while(1){
        //iniciamos el reloj
        tiempo=SDL_GetTicks();
        tecla=SDL_GetKeyState(0);
        SDL_PollEvent(&evento);
        if(tecla[SDLK_ESCAPE])exit(1);
        //comprovamos el tiempo
        tiempo =SDL_GetTicks()-tiempo;
        if(tiempo < 33.33){            //si aun sobra tiempo hasta llegar a los 33.33 ms
            SDL_Delay( 33.33-tiempo ); //vete a dormir durante 33.33-x milisegundos 33.33 ms es = 30 fps en 1 s
        }
    }


}


Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

GhostLT

Gracias, por mi parte pueden cerrar el post
There is some fiction in you truth, and some truth in you fiction

anonimo12121

Cita de: GhostLT en 11 Octubre 2010, 20:03 PM
Gracias, por mi parte pueden cerrar el post
pero lo mio te a valido?
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746