Hola,estoy empesando en la creacion de juegos con SDL y me pone un codigo para que muestre una nave en la pantalla pero cuando lo pongo a compilar me tira los siguientes Errores:
--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(10) : error C2065: 'SDL_surface' : undeclared identifier
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(10) : error C2065: 'image' : undeclared identifier
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(10) : error C2065: 'screen' : undeclared identifier
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(10) : error C2100: illegal indirection
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(25) : error C2440: '=' : cannot convert from 'struct SDL_Surface *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(32) : error C2440: '=' : cannot convert from 'struct SDL_Surface *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(43) : error C2227: left of '->w' must point to class/struct/union
c:\documents and settings\cerezo\escritorio\codigo sobre sdl\cpp1.cpp(44) : error C2227: left of '->h' must point to class/struct/union
Error executing cl.exe.
Cpp1.obj - 8 error(s), 0 warning(s)
Y el codigo que coloco es el siguiente:
#include <SDL.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
SDL_surface *image, *screen;
SDL_Rect dest;
SDL_Event event;
int done=0;
atexit(SDL_Quit);
//Iniciar SDL
if (SDL_Init(SDL_INIT_VIDEO) <0 )
{
printf("No se pudo iniciar SDL:%s\n",SDL_GetError());
exit(1);
}
//Activamos modo grafico
screen=SDL_SetVideoMode(640,480,24,SDL_HWSURFACE);
if (screen==NULL)
{
printf("No se puede inicializar el modo grafico: \n",SDL_GetError());
exit(1);
}
//Cargamos graficos
image=SDL_LoadBMP("nave.bmp");
if (image==NULL)
{
printf("No pude cargar grafico: %s\n",SDL_GetError());
exit(1);
}
//Definimos donde dibujamos el grafico
//y lo copiamos a la pantalla.
dest.x=100;
dest.y=100;
dest.w=image->w;
dest.h=image->h;
SDL_BlitSurface(image, NULL, screen, &dest);
//Mostramos la pantalla
SDL_Flip(screen);
//Liberar superficie
SDL_FreeSurface(image);
//Esperamos la pulsacion de una tecla para salir
while(done==0)
{
while (SDL_PollEvent(&event))
{
if (event.type==SDL_KEYDOWN)
done=1;
}
}
return 0;
}
Estoy usando el Visual C++ 6.0 (es el que utilizo el que hizo el libro) pero no se como hacer para que me funcione alguien me podria decir a que viene esos errores???
PD:yo estudie C++ de C no lo toque ,seria lo mismo poner en la parte de printf (que es de C) poner cerr<<(que es de C++)??
Espero que me puedan ayudar.
ranser, pregunta tonta pero necesaria, tenes instalado SDL no?
http://www.libsdl.org/download-1.2.php
Cita de: ranser en 8 Julio 2010, 02:11 AMPD:yo estudie C++ de C no lo toque ,seria lo mismo poner en la parte de printf (que es de C) poner cerr<<(que es de C++)??
http://www.cplusplus.com/reference/iostream/cerr/
fprintf( stderr, "ERROR" );
cerr << "ERROR" << endl;
Salu10.
segui un manual de como meter la libreria SDL en el VC++ 6.0 (meti tambien las librerias auxiliares SDL_mixer,SDL_net,etc) y probe un codigo que saque de internet para ver si funciona y me lo compila y me abre una ventana en negro ,osea que la libreria esta bien instalada,pero no tengo idea de xq me tira esos errores.
Saludos.
Viendo un poco mas el codigo, te equivocaste en lo siguiente...
SDL_surface *image, *screen;
y seria...
SDL_Surface *image, *screen;
Salu10.
es verdad pero cuando lo modifico en vez de salirme 8 errores me salen 18,no se xq puede suceder esto.
Saludos.
Postea los nuevos errores que te salen (¿tiene la etiqueta GeSHi capacidad para mostrar números de línea o algo?, Es que, así a pelo, hay que ir contando las líneas una a una hasta llegar a la que menciona el error :P ).
Salu2
me puse el Dev-C++ y puse ese codigo modificado el Surface y la libreria SDL/SDL.h y me anda bien , me puse aver el VC++ xq no puede ser que uno me lo tome y el otro no y ya lo pude solucionar le puse la carpeta include y lib dentro del proyecto mas la imagen y modifique lo que me dijeron y tuve que colocar de nuevo la libreria SDL (el VC++ 6.0 tira error al llamar a la libreria de esta manera SDL/SDL.h la manera correcta es SDL.h hablo del VC++ 6.0 en otros compiladores como Dev-C++ va el otro),lo malo es que siempre que abro un nuevo proyecto o una hoja de codigo y quiero poner la libreria SDL la tengo que volver a configurar todo,es medio tedioso pero es lo que hay, Igual muchas gracias x ayudarme les agradezco mucho.
Saludos.