Anuncios Google

Problema

Hola esk estoy programando en SDL "Visual C++ 2010 express" y no me compila bien.

El codigo:

(Recuerden que en vc++ #include "SDL.h" se incluye asi la libreria.)

#include "SDL.h"
 
 
int main(int argc, char *argv[]) { 
SDL_Surface *screen;       // Definimos una superficie
 
//Surfaces de las imegenes------------------
SDL_Surface *screen, *imagen1; /* Declararos como punteros */
//Se acaba surface de las imagenes----------
 
if(SDL_Init(SDL_INIT_VIDEO) < 0) //iniciamos el modo video
     {
	fprintf(stderr, "Error al inicializar SDL: %s\n", SDL_GetError());
	exit(1);
    }
 
 
    atexit(SDL_Quit);            // Al salir, cierra SDL
 
 
    screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
    if(screen == NULL); 
    {
    //En caso de error
	fprintf(stderr, "Error al crear la superficie: %s\n", SDL_GetError());
	exit(1);
    }
    //Cargamos la imagen------------------
    imagen1=SDL_LoadBMP("Imagen.bmp");
    SDL_Rect rectangulo;
    rectangulo.x=413;
    rectangulo.y=242;
    rectangulo.w=imagen->w; /* El operador flecha (->) solo funciona con punteros */
    rectangulo.h=imagen->h;
    SDL_BlitSurface(Imagen1,NULL,Screen,&rectangulo);
 
    SDL_UpdateRects(screen,1,&rectangulo);
SDL_Quit();
 
return 0;
}

El error:

 

1>------ Operación Generar iniciada: proyecto: SDLWin, configuración: Debug Win32 ------

1>  SDLWin.cpp

1>c:\users\samsung\documents\visual studio 2010\projects\sdlwin\sdlwin\sdlwin.cpp(32): error C2227: el operando izquierdo de '->w' debe señalar al tipo class/struct/union/generic

1>          el tipo es 'int'

1>c:\users\samsung\documents\visual studio 2010\projects\sdlwin\sdlwin\sdlwin.cpp(33): error C2227: el operando izquierdo de '->h' debe señalar al tipo class/struct/union/generic

1>          el tipo es 'int'

========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========


Mi blog: adriel0000.wordpress.com

 

un saludo.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de exterminator

Veamos

Lo primero, estás declarando dos veces SDL_Surface *screen . Imagino que es ese el error (más bien advertencia).

if(SCREEN == NULL);  <-- Ese ; sobra, supongo que es la instrucción vacía que encuentra el compilador.

Por otro lado, el conflicto con la palabra imagen se debe a que tú creaste imagen1, no imagen (o al menos yo no veo declarada imagen en ningún lado), además de que para usar el operando -> imagen tiene que ser un tipo de variable que evidentemente no es, puesto que no la has declarado.

Y otra vez lo mismo con Imagen1 y Screen. El lenguaje C y C++ distinguen entre mayúsculas y minúsculas, así que no las uses indiscriminadamente.

Ten cuidado con lo que haces porque por lo visto todos los errores son de sintaxis, y el código no es extenso...

Salu2


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.

Imagen de adriel0000

Gracias

Gracias pero aun me da error. He actualizado el tema con el nuevo codigo y el nuevo error.

Imagen de joserc87

Arreglado.

Tenías bastantes errores de sintaxis. Creo que exterminator los ha dicho todos. Este es el código, y funciona 100%. Si te da un error de ejecución, asegúrate de que el archivo Imagen.bmp está en el sitio correcto. Además, te hará falta poner un system("pause"); o algo, ya que el programa no para y solo se ve una ventana durante una fracción de segundo:

#include <SDL.h>
 
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[]) {
	//Surfaces de las imegenes------------------
	SDL_Surface *screen, *imagen1; 
	//Se acaba surface de las imagenes----------
 
	if(SDL_Init(SDL_INIT_VIDEO) < 0){ //iniciamos el modo video
		fprintf(stderr, "Error al inicializar SDL: %s\n", SDL_GetError());
		exit(1);
	}
 
 
	atexit(SDL_Quit);            // Al salir, cierra SDL
 
 
	screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
	if(screen == NULL){
		//En caso de error
		fprintf(stderr, "Error al crear la superficie: %s\n", SDL_GetError());
		exit(1);
	}
	//Cargamos la imagen------------------
	imagen1=SDL_LoadBMP("Imagen.bmp");
	SDL_Rect rectangulo;
	rectangulo.x=413;
	rectangulo.y=242;
	rectangulo.w=imagen1->w; 
	rectangulo.h=imagen1->h;
	SDL_BlitSurface(imagen1,NULL,screen,&rectangulo);
 
	SDL_UpdateRects(screen,1,&rectangulo);
	SDL_Quit();
 
	return 0;
}

PD: La próxima vez di los errores nuevos. Si no, no te podemos ayudar.

PD2: Con esto te demuestro que he instalado el SDL en VC++ 2010, tal y como te ponía en la otra hebra.


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Gracias pero

Gracias pero me sigue dando error esta es la carpeta del proyecto:

Y esta es el error que me da el SDLwin.exe tras averlo compilado/ejecutado:

No se encuentra el punto de entrada del procedimiento SDL_strlcat en la biblioteca de vinculos dinamicos SDL.dll

 

Esta claro que tiene que ver con SDL.dll pero lo tengo puesto como ven en la primera imagen.

Codigo de error:

 

'SDLWin.exe': se cargó 'C:\Users\samsung\Documents\Visual Studio 2010\Projects\SDLWin\Debug\SDLWin.exe', Símbolos cargados.

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Users\samsung\Documents\Visual Studio 2010\Projects\SDLWin\Debug\SDL.dll', El binario no se generó con la información de depuración.

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\winmm.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file

El programa '[2712] SDLWin.exe: Nativo' terminó con código -1073741511 (0xc0000139).

 

 

Codigo:

 

#include <SDL.h>

 

#include <iostream>

using namespace std;

 

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

//Surfaces de las imegenes------------------

SDL_Surface *screen, *imagen1; 

//Se acaba surface de las imagenes----------

 

if(SDL_Init(SDL_INIT_VIDEO) < 0){ //iniciamos el modo video

fprintf(stderr, "Error al inicializar SDL: %s\n", SDL_GetError());

exit(1);

}

 

 

atexit(SDL_Quit);            // Al salir, cierra SDL

 

 

screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);

if(screen == NULL){

//En caso de error

fprintf(stderr, "Error al crear la superficie: %s\n", SDL_GetError());

exit(1);

}

//Cargamos la imagen------------------

imagen1=SDL_LoadBMP("Imagen.bmp");

SDL_Rect rectangulo;

rectangulo.x=413;

rectangulo.y=242;

rectangulo.w=imagen1->w; 

rectangulo.h=imagen1->h;

SDL_BlitSurface(imagen1,NULL,screen,&rectangulo);

 

SDL_UpdateRects(screen,1,&rectangulo);

SDL_Quit();

return 0;

}


Editado: El límite del ancho de las imágenes es de 500 pixeles, sobrepasar este límite puede descolocar la web e incumple las Normas de la Comunidad, antes de volver a postear por favor revíselas.| AORV


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Ok, es es un problema de configuración de VC++.

No tiene nada que ver con el código. El error que comentas es bastante común en VC++ al usar SDL. Presupongo que ya has copiado los .lib y los .h:

A ver, dale con el botón derecho en el proyecto-> propiedades y cambias lo siguiente:

  • c++ -> generación de código -> Biblioteca en tiempo de ejecución lo pones en DLL multiproceso (/MD)
  • vinculador -> entrada -> dependencias adicionales y añades SDL.lib y SDLmain.lib (aunque seguramente eso ya lo has hecho)
  • vinculador -> sitema -> Subsistema lo cambias a: Windows (/SUBSYSTEM:WINDOWS)

Haz eso y mira a ver si funciona.

Saludos!


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Nada

Nada todo eso lo tengo pero me sigue sin funcionar... :(

Imagen de joserc87

Vale

Según he leido, es un problema de incompatibilidad entre versiones, es decir que los archivos .lib tienen otra versión a la DLL. Es posible que tengas en System32 otra versión antigua del dll que te la haya instalado algún juego.  Aunque sé que es un coñazo, vuelve a hacerlo todo de nuevo:

  • Bajate la última versión http://www.libsdl.org/release/SDL-devel-1.2.14-VC8.zip
  • Copia los .lib y .dll a la carpeta lib del VC, y el .dll a la carpeta system32. Reemplaza cuando te lo pida.
  • Borra el dll de la carpeta de tu proyecto, no te hace falta si ya lo tienes en system32.

Prueba a ver ahora. Debería de funcionar.


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Hice lo que me dijiste

Hice lo que me dijiste y como estoy en windows 7 por si acaso meti la dll en system y nada no me va en ningun lado  e vuelto a hacer todo y nah por cierto los archivos de inclusion los tengo en otra carpeta pero los meti en el proyecto... Ayuda....

Edit: Me sigue saliendo el mismo problema 


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Mmm

Como nunca me ha salido ese error, he estado googleando y hay muchos casos como el tuyo, y todos se arreglan al instalar la última versión. Tienes que tener algún SDL.dll antiguo peridido por alguna parte. Haz una búsqueda rápida para asegurarte. No se me ocurre nada más por ahora.

Por supuesto, después tienes que volver a generar la solución, para que tome las nuevas bibliotecas.

Por cierto, no hace falta que pongas el dll en system ni los arhivos de cabecera en el proyecto (yo también  estoy en win7 de 64 bits y el dll lo tengo en system32 y los .h en la carpeta include).


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Gracias

Gracias, Solucione eso pero aora viene el siguiente error xD

Cuando compilo me sale una ventana con un mensaje asi:

 

Excepción no controlada en 0x012315df en SDLWin.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0x00000008.

 

y me da dos opciones: interrumpir o siguiente. Siguiente no me va asi que le doy a interrumpir. y me marca con una flecha amarilla este codigo:

rectangulo.w=imagen1->w; 

 

Una captura por si acaso:


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Bien

Bueno, si ya has conseguido configurar el VisualC++, el resto es coser y cantar.

Respuesta sencilla: la imagen no está donde debería.

Respuesta larga: Si te marca una excepción en esa línea es porque el puntero imagen1 está a null, lo que quiere decir que SDL_LoadBMP no ha conseguido leer la imagen, lo que a su vez quiere decir, casi con total seguridad, que la imagen Imagen.bmp no está en el sitio correcto. La tienes en Debug, verdad? Cópiala a la carpeta anterior, a la del proyecto.

Otra cosa, te conviene, para estos casos, que compruebes que la imagen se ha leido correctamente. Una forma sencilla de hacer esto es:

//Cargamos la imagen------------------
imagen1=SDL_LoadBMP("Imagen.bmp");
if (!imagen1){
  printf ("ERROR: La imagen Imagen.bmp no se ha podido leer\nSaliendo...\n");
  return (-1);
}

Para utilizar printf tienes que hacer un #include <stdio.h>.

Saludos!


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Acualize

Actualize el codigo con ese trozo que me as dado despues copie la imagen en la raiz del proyecto y en donde esta el SDLwin.cpp y..... !!Nada¡¡ Me da error :(...

 

Codigo de error:

'SDLWin.exe': se cargó 'C:\Users\samsung\Documents\Visual Studio 2010\Projects\SDLWin\Debug\SDLWin.exe', Símbolos cargados.

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\system\SDL.dll', El binario no se generó con la información de depuración.

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\winmm.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\msvcr100.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ddraw.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\dciman32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\setupapi.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\cfgmgr32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\devobj.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\ddraw.dll'

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\dwmapi.dll'

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\setupapi.dll'

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\devobj.dll'

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\oleaut32.dll'

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\ole32.dll'

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\cfgmgr32.dll'

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\dciman32.dll'

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Program Files (x86)\SweetIM\Messenger\mgAdaptersProxy.dll', El binario no se generó con la información de depuración.

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Program Files (x86)\SweetIM\Messenger\msvcr71.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\KBDUS.DLL', Cannot find or open the PDB file

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\KBDUS.DLL'

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\KBDSP.DLL', Cannot find or open the PDB file

'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\KBDSP.DLL'

'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file

El programa '[3172] SDLWin.exe: Nativo' terminó con código -1 (0xffffffff).

 


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Vamos por buen camino.

Realmente no hay ningún error (lo de cannot find PDB no son errores, pasa de ellos) Como ves en la última línea:

El programa '[3172] SDLWin.exe: Nativo' terminó con código -1 (0xffffffff).

Lo que quiere decir que la imagen no se ha podido leer (es decir, que llega al return(-1) que le hemos puesto). Lo que no se es porqué no sale la frasecita de ERROR: La imagen Imagen.bmp no se ha podido leer , pero bueno. 

Para empezar, supongo que has copiado el código tal cual. Si te has saltado por ejemplo el símbolo ! produce lo contrario a lo que queremos. También puedes poner

//Cargamos la imagen------------------
imagen1=SDL_LoadBMP("Imagen.bmp");
if (imagen1==0){
  printf ("ERROR: La imagen Imagen.bmp no se ha podido leer\nSaliendo...\n");
  return (-1);
}

Si te resulta más sencillo. Asegúrate de que el nombre de la imagen sea exactamente el que has puesto en el código, INCLUIDA LA EXTENSION! e ir probando a copiarlo en varias carpetas (en principio debería estar en la carpeta del proyecto, donde están los archivos .sdf, .sln, .suo, .vcxproj etc, pero por probar...).

Si sigues sin conseguirlo, copia la imagen al lado del ejecutable (en Debug) y ejecútalo DESDE LA CARPETA, no desde el visual. Eso debería funcionar.

Por cierto, le pusiste el system("pause"); ? Tienes que ponerlo justo antes de SDL_Quit();

Ya me dirás que resultados te ha dado cada cosa.


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Hice eso

Hice eso que me dijiste y me sale una ventana que se llama inspeccion , solo sale unos segundos. y este es el resultado:


 

'SDLWin.exe': se cargó 'C:\Users\samsung\Documents\Visual Studio 2010\Projects\SDLWin\Debug\SDLWin.exe', Símbolos cargados.
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Users\samsung\Documents\Visual Studio 2010\Projects\SDLWin\Debug\SDL.dll', El binario no se generó con la información de depuración.
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\winmm.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\msvcr100.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ddraw.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\dciman32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\setupapi.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\cfgmgr32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\devobj.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\ddraw.dll'
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\dwmapi.dll'
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\setupapi.dll'
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\devobj.dll'
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\oleaut32.dll'
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\ole32.dll'
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\cfgmgr32.dll'
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\dciman32.dll'
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Program Files (x86)\SweetIM\Messenger\mgAdaptersProxy.dll', El binario no se generó con la información de depuración.
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Program Files (x86)\SweetIM\Messenger\msvcr71.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\KBDUS.DLL', Cannot find or open the PDB file
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\KBDUS.DLL'
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\KBDSP.DLL', Cannot find or open the PDB file
 
'SDLWin.exe': se descargó 'C:\Windows\SysWOW64\KBDSP.DLL'
 
'SDLWin.exe': se cargó 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
 
El programa '[4580] SDLWin.exe: Nativo' terminó con código -1 (0xffffffff).

 

 

Codigo:

#include <SDL.h>
 #include <stdio.h>
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[]) {
	//Surfaces de las imegenes------------------
	SDL_Surface *screen, *imagen1; 
	//Se acaba surface de las imagenes----------
 
	if(SDL_Init(SDL_INIT_VIDEO) < 0){ //iniciamos el modo video
		fprintf(stderr, "Error al inicializar SDL: %s\n", SDL_GetError());
		exit(1);
	}
 
 
	atexit(SDL_Quit);            // Al salir, cierra SDL
 
 
	screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
	if(screen == NULL){
		//En caso de error
		fprintf(stderr, "Error al crear la superficie: %s\n", SDL_GetError());
		exit(1);
	}
    //Cargamos la imagen------------------
    imagen1=SDL_LoadBMP("Imagen.bmp");
    if (imagen1==0){
    printf ("ERROR: La imagen Imagen.bmp no se ha podido leer\nSaliendo...\n");
    return (-1);
    }
	SDL_Rect rectangulo;
	rectangulo.x=413;
	rectangulo.y=242;
	rectangulo.w=imagen1->w; 
	rectangulo.h=imagen1->h;
	SDL_BlitSurface(imagen1,NULL,screen,&rectangulo);
 
	SDL_UpdateRects(screen,1,&rectangulo);
 
	system("pause");
 
	SDL_Quit();
 
	return 0;
}

 

y si abro el .exe con la imagen en la misma carpeta se me abre el .exe 2 segundos y no se muestra nada. (Tengo puesto system("pause"); )


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Mmm

Lo único que se me ocurre es que la imagen esté mal, que sea un PNG con extensión BMP, que esté dañada, o algo por el estilo. Intenta probar con otro BMP, con uno creado por tí mismo con el paint por ejemplo.

Si aún sigue sin funcionar, también puedes intentar abrir el CMD, irte a la carpeta Debug donde tienes el exe y ejecutarlo desde el cmd. Te debería poner ERROR: La imagen Imagen.bmp no se ha podido leer\nSaliendo si es que no la ha podido leer. Si no te sale el mensaje, es que el problema no está en SDL_LoadBMP. (otra forma de verificarlo es cambiando el return (-1) por return (4) por ejemplo. Si lo haces debería cambiar el mensaje terminó con código -1 por terminó con código 4).

Espero que te funcione pronto porque se me empiezan a acabar las ideas. Es más facil deupurar algo cuando lo tienes delante :)


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Vale

Vale hice una nueva imagen bmp y la meti en la carpeta del proyecto. Me lo creaba pero no se veia nada asi que use la imagen en debug y abir el exe y bravo funciono. Se me ve la imagen y despues me pone en una ventana estilo consola. Presione una tecla para continuar

gracias. te devo mil. Aunque me pone SDL_app (No Responde) xD


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Me alegro.

Osea que al final la imagen estaba mal. Con este tipo de errores te puedes volver loco buscando la causa xD.

Lo de que no te responde, lo veo normal, no te asustes. Es como que se queda colgado (no hace nada) hasta que pulsas una tecla.

Ahora tienes un LAAARGO camino por delante para aprender SDL (sprites, animaciones, sonido, música, texto, etc, etc) y al final poder hacer un jueguecillo. A veces será frustrante y tendrás que armarte de paciencia, pero no desistas, al final es gratificante.

Si tienes más dudas o problemas (que te aseguro que los tendrás), ya sabes donde estamos.

Saludos!


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Muchas gracias

Muchas gracias, y sabes algun tutorial en español para iniciarme en los eventos del teclado??? osea solo quiero por ejemplo que al pulsar A se crease la imagen pero no se que tutorial cojer. 

Gracias.


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Tutorial

Si quieres mi humilde opinion, para mí, el mejor de los mejores es:

Programación de videojuegos con SDL de alberto garcía serrano

http://www.agserrano.com/libros/sdl/%5Bebook%5DProgramacion%20de%20videojuegos%20con%20SDL.pdf

El primer capítulo es un poco de paja y de cultura general, aunque está interesante si tienes tiempo. El resto son muy prácticos y muy completos. A mí este documento me ayudó mucho :) (incluso de vez en cuando lo miro para consultar algo).

Aunque esa es mi opinión, hay muchos otros tutoriales, que no son ni mejores ni peores.

Saludos!


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Gracias pero

Gracias pero ese ya me lo conocia... Yo decia algo asi como los tutoriales de c de scenebeta que te explique el codigo y que vallas mas o menos de cero. 

 

P.D Deverias hacer tutoriales. Sabes mucho.


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Me temo que no.

Lo normal es aprender a programar y luego aprender a usar alguna biblioteca como SDL, pero todo a la vez no se si es bueno. Yo te recomiendo que aprendas C antes. No te llevará tanto tiempo, aunque depende de cada caso. Respecto a tutoriales de C, no conozco muchos, lo siento, aunque sé que hay millones (los de Scenebeta están bien por ejemplo).


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Espera

Espera que no me entendiste. Yo se C algo de C++ lo unico es un tutorial de SDL que te lo explique todo muy paso a paso y no te meta a hacer un jueo cuando quieres hacer que al pulsar un boton te ponga  una imagen.


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

Ah.

Entonces, si sabes C, te vuelvo a aconsejar el doc que te he puesto antes. No es como piensas, va paso a paso. De hecho el primer capítulo trata de pintar una imágen en la ventana, básicamente lo que has puesto tú aquí, y después te explica cada línea de código. En los otros capítulos te explica como poner transparencia a una imagen, como gestionar el teclado, etc todo muy bien explicado. Además te explica varias cosas que en otros tutoriales no explican.

Si por lo que sea no te gusta, también tienes este: http://lazyfoo.net/SDL_tutorials/index.php. Aunque a mi gusto no es tan bueno.


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

...

Te Amo... GRACIAS MEN!!!

 

Fue una Grandiosa ayuda.. :D

Imagen de adriel0000

Vale

Vale muchas gracias. :)

Imagen de exterminator

Yo sigo

viendo exactamente el mismo código.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.