SDL_TTF和SDL 2不能一起工作。给出未处理的例外

时间:2016-04-03 09:44:19

标签: c++ visual-c++ sdl-2 sdl-ttf sdl-mixer

所以我想在SDL2中创建一个文本渲染器。当我在游戏的每一帧更新文本时,最终它给了我这个错误:

Unhandled exception at 0x6C7B543D (SDL2.dll) in Games.exe: 0xC0000005: Access violation reading location 0x00000004.

这很奇怪,因为它不会立即给我异常,只是一段时间后(这个时间似乎有所不同,我认为SDL_Mixer正在造成它)当我'打破'异常我似乎这是导致这一行错误(当我从表面创建纹理时):

void Text::SetText(SDL_Renderer* rend, std::string message)
    {
        SDL_Color textCol = { Col.Red, Col.Green, Col.Blue, Col.Alpha };

        //Load image at specified path
        SDL_Surface* loadedSurface = TTF_RenderText_Solid(font, message.c_str(), textCol);
        if (loadedSurface == NULL) Debug::Fatal("Could not load text");

        //Create texture from surface pixels
        /*EXCEPTION ON THIS LINE --->*/ SDL_Texture* newTexture = SDL_CreateTextureFromSurface(rend, loadedSurface);

        if (newTexture == NULL) Debug::Fatal("Could not create texture from text");

        Scale.x = loadedSurface->w;
        Scale.y = loadedSurface->h;

        //Get rid of old loaded surface
        SDL_FreeSurface(loadedSurface);

        Texture = newTexture;
    }

我使用的是32位Visual Studio版本的SDL_TTF。

如果您能帮忙解决这个问题,请不要错过。谢谢。

期望的行为是它可以加载文本,而不会最终给出异常。

其他人有这个错误,但解决方案没有帮助(因为我在更新的回购中找不到可视工作室版本):Getting SDL_ttf to play nice with SDL2

编辑1:

更新到稍新版本的SDL_TTF 2之后错误仍未修复,有任何建议吗?

编辑2:

致电:

SDL_GetError()
IMG_GetError()
TTF_GetEror()

这是控制台中的输出:

CreateTexture(): UNKNOWN
CreateTexture(): UNKNOWN
CreateTexture(): UNKNOWN

似乎“TTF_RenderText_Solid”返回NULL。顺便说一句,我使用的是最新版本的SDL_TTF。

1 个答案:

答案 0 :(得分:1)

正如您引用的帖子中所建议的那样,您应该更新SDL_ttf版本以使其与SDL2一起使用。

这是适用于visual studio的SDL_TTF SDL2版本。 http://hg.libsdl.org/SDL_ttf/file/62fc3433538d/VisualC

您将找到允许您构建SDL_ttf库的SDL_ttf.sln;)。