Excepcion no controlada SDL_TTF

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

Excepcion no controlada SDL_TTF

Notapor migueleitorone » Mar Ene 18, 2011 3:52 pm

buenas tarde, como va todo?
Estoy atascado con el tema de las fuente en SDL y tengo un codigo que en principio deveria funcionar sin problemas pero me salta un error que no se como solucionar, ahi va el codigo:
Código: Seleccionar todo
#include "SDL.h"
#include "SDL_image.h"
#include "SDL_ttf.h"
#include <conio.h>

int main(int argc, char *argv[])
{
   SDL_Init(SDL_INIT_VIDEO);
   SDL_Surface *ventana = SDL_SetVideoMode(250, 200, 32, SDL_HWSURFACE|SDL_NOFRAME);
   SDL_Surface *imagen = IMG_Load("ventana.bmp");
   if(imagen == NULL) printf("KELOKEPASA: %s", SDL_GetError);
   SDL_BlitSurface(imagen, NULL, ventana, NULL);
   SDL_Flip(ventana);

   TTF_Init();
   TTF_Font * fuente = TTF_OpenFont("fuente.ttf", 10);

   SDL_Color color = {255,100,100,255};
   SDL_Surface * texto = TTF_RenderText_Solid(fuente, "hola", color); //------->Infracción de acceso al leer la ubicación 0x00000000.
   
   SDL_BlitSurface(texto, NULL, ventana, NULL);
   SDL_Flip(ventana);
   

   
   TTF_CloseFont(fuente);
   
   getch();
   atexit(SDL_Quit);
   atexit(TTF_Quit);
   return 0;
}


el error entero es este: Primera excepción en 0x6f4c27f4 en gestor tareas.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0x00000000.
Excepción no controlada en 0x6f4c27f4 en gestor tareas.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0x00000000.

gracias de antemano :D


EDITO: Ya lo he solucionado comprobando el resultado de cada funcion, resulta que estaba mal ubicado el archivo "fuente.ttf" ¬¬, ya van dos veces con la misma pierda jajajaja
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: Excepcion no controlada SDL_TTF

Notapor Mightygaver » Mar Ene 18, 2011 5:50 pm

Tiene pinta de un segmentation fault. Si programas en C, debes de ver ese error frecuentemente... es algo que por más que he programado en C/C++ no logro evitar... Ese error se da cuando intentas acceder a una dirección de memoria que está fuera de la memoria de tu programa.

Creo que el error es que TTF_OpenFont te está devolviendo NULL, por algún tipo de error a la hora de cargar la fuente.ttf que le pasas como argumento. ¿Estás seguro de tener ese fichero ttf en tu carpeta? Mira de probar con alguna fuente descargada, métela en la carpeta donde tengas el ejecutable y le das a ver.

Otra cosa que puedes hacer es añadir después de TTF_OpenFont:

Código: Seleccionar todo
if ( fuente ==  NULL )
{
  printf("Algun mensaje que aparezca.\r\n");
}


O ya que utilizas SDL_GetError, dale a eso a ver que sale XD. La verdad que no sé de SDL, pero esa excepción que te da el sistema operativo, dice que estás intentando acceder a la dirección de memoria 0x00000000, que no es nada más que NULL.
Mightygaver
 
Mensajes: 69
Registrado: Vie Ago 27, 2010 5:46 pm
Ubicación: Vila-real, España

Re: Excepcion no controlada SDL_TTF

Notapor migueleitorone » Mié Ene 19, 2011 2:52 pm

gracias mightygaver, al final lo pude solucionar como dices, con el TTF_GetError.
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron