Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Problema con SDL_TTF
Forum - Altri Linguaggi - Problema con SDL_TTF

Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 18:03
Giovedì, 07/01/2010
Ho un problema: quando lancio il comando TTF_RenderText_Shaded l'applicazione mi si chiude e mi scrive un errore:
First-chance exception at 0x6f4c237b in Metal Nonnina Adventure.exe: 0xC0000005: Access violation reading location 0x00000000.
Unhandled exception at 0x6f4c237b in Metal Nonnina Adventure.exe: 0xC0000005: Access violation reading location 0x00000000.

Cercando su internet ho scoperto che questo avviene quando il comando TTF_OpenFont non trova il font nel percorso specificato e di conseguenza rimane NULL. Di conseguenza io ho controllato se effettivamente il TTF_Font rimane null e questo è vero. Il problema sta nel fatto che il font E' nel percorso da me specificato (semplicemente "font.ttf"). Non riesco a capire perchè sto programma non funziona. Vi scrivo alcune parti di codice perchè scriverlo tutto non avrebbe senso e ci sarebbero un sacco di parti che non vi interessano
Codice sorgente - presumibilmente C#

  1. TTF_Init(); //Sta nel metodo metodo inti2()
  2. drawText(screen, "testo da scrivere", 18, 20, 20, 0, 0, 255, 0, 0, 0); //Sta in main
  3. int drawText(SDL_Surface* screen, //E' il metodo che disegna il testo
  4.               const char* string,
  5.               int size,
  6.               int x, int y,
  7.               int fR, int fG, int fB,
  8.               int bR, int bG, int bB)
  9. {
  10.        
  11.         SDL_Color foregroundColor = { fR, fG, fB };
  12.         SDL_Color backgroundColor = { bR, bG, bB };
  13.  
  14.         TTF_Font* font = TTF_OpenFont("font.ttf", 16);
  15.  
  16.         if(font == NULL)
  17.         {
  18.              fprintf(stderr, "Errore nel caricamento del font: %s\n", TTF_GetError());
  19.         }
  20.  
  21.         SDL_Surface* textSurface;
  22.  
  23.         textSurface = TTF_RenderText_Shaded(font, string,foregroundColor,backgroundColor);
  24.        
  25.         if(textSurface == NULL)
  26.         {
  27.                 Error(4);
  28.         }
  29.        
  30.         SDL_Rect textLocation = { x, y, 0, 0 };
  31.        
  32.         SDL_BlitSurface(textSurface, NULL, screen, &textLocation);
  33.        
  34.         SDL_FreeSurface(textSurface);
  35.        
  36.         TTF_CloseFont(font);
  37.  
  38.         return 0;
  39. }



Concludo dicendo che uso XP e ho Visual Studio C++ 2008 Express e che dentro la cartella Release (uso la configurazione Release perchè per far andare le SDL mi va solo questa l'altra non sono ancora riuscito a configurarla bene) ci sono i seguenti file:
font.ttf
libfreetype-6.dll
SDL.dll
SDL_image.dll
SDL_mixer.dll
SDL_ttf.dll
zlib1.dll
e altri file wav e txt che mi servono per il programma.
Spero che riusciate a chiarire i miei dubbi.

Saluti,
edo42

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:17
Giovedì, 07/01/2010
Probabilmente Visual Studio si aspetta il file da un altra parte quando il programma viene eseguito dall'IDE. Prova ad inserirne una copia nella cartella del progetto.

Prova anche inserendo il percorso completo per capire se il file è a posto.

Controlla con un tool (NTFileMon ad esempio) dove viene cercato il file ...

P.S. Perchè non hai postato in C++ ? Il linguaggio e' quello ... SDL è una libreria ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 18:43
Giovedì, 07/01/2010
Dove lo posso scaricare che su google non l'ho trovato?

Si hai ragione non dovrebbe stare qui questo topic ma ormai è qui...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:48
Giovedì, 07/01/2010
Cerca SysInternals e scarica la Suite ...

Prima di questo comunque, prova a spostare il file nella cartella del progetto ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 18:55
Giovedì, 07/01/2010
Ho messo delle istruzioni di debug, mi dice Could not found font.ttf
ora cerco il programma che mi hai consigliato e guardo.

PM Quote
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 19:08
Giovedì, 07/01/2010
ok ho scaricato tutto ma non ho capito quale dei programmi devo usare...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:12
Giovedì, 07/01/2010
Mi sembra, Process Monitor ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 19:44
Giovedì, 07/01/2010
Ok sono riuscito era un problema stupido: bastava mettere al posto di "font.ttf" "/font.ttf"

Grazie

PM Quote