2015-09-27 1 views
1

Je rencontre essentiellement le même problème "original" que cet utilisateur: C++ SDL segmentation fault.Erreur de segmentation lors du chargement TTF - SDL2

Cependant, même après avoir installé la police que j'essaie d'utiliser, je reçois toujours une erreur de segmentation dès que j'exécute le programme.

J'utilisé gdb pour déboguer et il revient avec:

TTF_SizeUNICODE ([email protected]=0x0, [email protected]=0xbfffefe0, [email protected]=0xbfffef9c, [email protected]=0xbfffefa0) at SDL_ttf.c:1127 
1127  use_kerning = FT_HAS_KERNING(font->face) && font->kerning; 

Voici comment je suis le chargement de la police TTF:

TTF_Font *font; 
TTF_Init(); 
font = TTF_OpenFont("/includes/game_over.ttf",30); 

Toutes les idées sur ce que cela signifie?

+2

Je vois font = 0, alors je vois que la police est déréférencée deux fois (font-> face et font-> crénage). Pourquoi la police est-elle égale à 0? – donjuedo

+0

@donjuedo Je ne suis pas sûr de savoir ce que vous voulez dire par pourquoi la police est égale à 0. Où voyez-vous que c'est égal à 0? Est-ce cela que le message implique? J'ai ajouté à l'OP du code sur la façon dont je charge actuellement le fichier de police à utiliser. – Quiver

+2

'font = font @ entrée = 0x0' – erip

Répondre

4

La police est nulle car TTF_OpenFont n'a pas pu ouvrir la police. Ajoutez cette ligne juste après TTF_OpenFont pour voir quel est le problème (par exemple, le fichier est manquant? Autorisations insuffisantes, etc) Ou voulez-vous dire inclut/game_over.ttf au lieu de /includes/game_over.ttf qui pointe vers le dossier racine?

if(!font) { 
    printf("TTF_OpenFont: %s\n", TTF_GetError()); 
} 
+0

Merci! Un problème est survenu lors du chargement du fichier en raison de l'emplacement auquel je le donnais, comme vous l'avez mentionné. – Quiver