调用TTF_OpenFont时出现奇怪的段错误

时间:2015-03-09 03:00:33

标签: c++ linux segmentation-fault codeblocks sdl-2

我将我正在制作的游戏从SDL 1.2移植到SDL2。在移植游戏并使其正确编译之后,当我在这里调用TTF_OpenFont时会出现段错误:

bool cargararchivos(SDL_Texture* &background,SDL_Texture* &player,TTF_Font* &font,SDL_Texture* &bullet,Config* placlips,SDL_Renderer* renderer)
{
    string playerss;
    //Open the font
    font = TTF_OpenFont( "lazy.ttf", 28 );
    //If there was an error in loading the font
    if(font==NULL)
    {
        return false;
    }
    try{
        playerss = placlips->lookup("filename").c_str();
    }catch(const SettingNotFoundException &nfex)
    {
        cerr << "No 'name' setting in configuration file." << endl;
        return false;
    }
    //Open background
    background = cargarimagen("fondo.png",renderer);
    if(background==NULL){
        return false;
    }
    //Open player sprites
    player = cargarimagen(playerss,renderer);
    if(player==NULL){
        return false;
    }
    bullet = cargarimagen("bullet.png",renderer);
    if(bullet==NULL)
        return false;
    return true;
}

在TTF_OpenFont结束之前发生了段错误。我得到的回溯是:

#0 ??   ?? () (??:??)
#1 0x7ffff7410ce5   TTF_CloseFont(font=0x8af1e0) (SDL_ttf.c:933)
#2 0x7ffff74110fd   TTF_OpenFontIndexRW(src=<optimized out>, freesrc=<optimized out>, ptsize=<optimized out>, index=0) (SDL_ttf.c:489)
#3 0x409c9d cargararchivos(background=@0x7fffffffe598: 0x0, player=@0x7fffffffe590: 0x0, font=@0x7fffffffe580: 0x0, bullet=@0x7fffffffe588: 0x0, placlips=0x7fffffffe560, renderer=0x9c25b0) (/home/xxxxx/xxxxx/main.cpp:33)
#4 0x40a526 main(argc=1, args=0x7fffffffe6e8) (/home/xxxxx/xxxxx/main.cpp:173)

如果我拿出所有的SDL_ttf东西,我仍然会得到类似的段错误但是使用IMG_Load。我怀疑这是我的CodeBlocks设置的一个问题,因为我可以使用g ++编写Lazy Foo SDL2教程并运行它们。或者它可能是一个错误?顺便说一句,我正在使用Debian sid(Linux)。请帮忙。

1 个答案:

答案 0 :(得分:0)

d&#39;!哦

SDL_ttf的1.2版本中有一个包含我忘记更改为新版本。伙计,我很蠢。谢谢keltar!