Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';t使用SDL2_ttf使用SDL2渲染文本_C++ - Fatal编程技术网

C++ Can';t使用SDL2_ttf使用SDL2渲染文本

C++ Can';t使用SDL2_ttf使用SDL2渲染文本,c++,C++,我总是得到分段错误核心转储错误。我不知道出了什么问题,我知道我没有在最后释放这些东西,但这不是原因(我猜)。我正在尝试创建一个非常简单的应用程序来呈现您输入的任何文本,但我无法让它工作 #include <iostream> #include <SDL2/SDL.h> #include <SDL2/SDL_image.h> #include <SDL2/SDL_ttf.h> int main(int argc, char *argv[]) {

我总是得到
分段错误核心转储错误
。我不知道出了什么问题,我知道我没有在最后释放这些东西,但这不是原因(我猜)。我正在尝试创建一个非常简单的应用程序来呈现您输入的任何文本,但我无法让它工作

#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>

int main(int argc, char *argv[])
{
    SDL_Window *window = NULL;
    SDL_Renderer* renderTarget = NULL;

    SDL_Init(SDL_INIT_VIDEO);
    TTF_Init();

    window = SDL_CreateWindow("potato", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
    renderTarget = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

        TTF_Font* Sans = TTF_OpenFont("Sans.ttf",30);
        SDL_Color White = {255, 255, 255};
        SDL_Surface* surfaceMessage = TTF_RenderText_Solid(Sans, "put your text here", White);
        SDL_Texture* Message = SDL_CreateTextureFromSurface(renderTarget, surfaceMessage);
        SDL_Rect Message_rect = {50,50,300,300};

    bool isRunning = true;
    SDL_Event ev;

    while (isRunning)
    {
        while (SDL_PollEvent(&ev) != 0)
        {
            if (ev.type == SDL_QUIT)
                isRunning = false;
        }

        SDL_RenderClear(renderTarget);
        SDL_RenderCopy(renderTarget, Message, NULL, &Message_rect); //
        SDL_RenderPresent(renderTarget);
    }

    SDL_Quit();
    TTF_Quit();

    return 0;
}
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
SDL_Window*Window=NULL;
SDL_渲染器*renderTarget=NULL;
SDL_Init(SDL_Init_视频);
TTF_Init();
window=SDL_CreateWindow(“土豆”,SDL_WINDOWPOS_居中,SDL_WINDOWPOS_居中,640480,SDL_window_显示);
renderTarget=SDL_CreateRenderer(窗口,-1,SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
TTF_Font*Sans=TTF_OpenFont(“Sans.TTF”,30);
SDL_颜色白色={255,255,255};
SDL_Surface*surfaceMessage=TTF_RenderText_Solid(无“将文本放在此处”,白色);
SDL_Texture*消息=SDL_CreateTextureFromSurface(渲染目标、表面消息);
SDL_Rect Message_Rect={50,50300300};
bool isRunning=true;
SDL_事件ev;
同时(正在运行)
{
while(SDL_PollEvent(&ev)!=0)
{
如果(ev.type==SDL_退出)
isRunning=false;
}
SDL_RenderClear(渲染目标);
SDL_RenderCopy(renderTarget、Message、NULL和Message_rect)//
SDL_RenderPresent(渲染目标);
}
SDL_退出();
TTF_Quit();
返回0;
}

您没有检查任何
SDL
TTF
函数是否返回空值。这些调用中的任何一个都可能发生错误。您没有检查任何
SDL
TTF
函数是否返回null。这些调用中的任何一个都可能发生错误。