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。这些调用中的任何一个都可能发生错误。