Я недавно переключился с SDL 1.0 на 2.0 для некоторых программных нужд. Мне удалось заставить его работать так же хорошо, как SDL_image, который я использую. Однако по какой-то причине SDL_ttf 2.0 в моей программе не работает. Я обратил внимание на использование функций версии 2.0, а не версии 1.0, и протестировал ttf с программами, которые мне не принадлежали, ничего не работало. Обычно программа запускается до тех пор, пока ей не нужно напечатать текст, затем она закрывается и отправляет «процесс вернулся -1073741819», который, как я знаю, сообщение об ошибке в программе должно возвращать 0. Я пробовал и x64, и x86, но ни один не работал, хотя x86, похоже, дает лучшие результаты.
#include <stdlib.h>
#include <stdio.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
int main()
{
SDL_Surface *logo = NULL, *Wreed, *Reminder, *ecran = NULL;
SDL_Window *window = NULL;
SDL_Texture *textureLogo = NULL, *textureWreed = NULL, *textureReminder = NULL;
SDL_Rect positionLogo = {1100/2 - 600/2, 700/2 - 600/2, 600, 600}, /*positionWreed,*/ positionReminder;
TTF_Font *police = NULL;
SDL_Color couleur = {0,0,0};
SDL_Renderer* renderer;
police = TTF_OpenFont("arial.ttf", 40);
window = SDL_CreateWindow("Wreed Reminder", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1100, 700, SDL_WINDOW_OPENGL);
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
ecran = SDL_GetWindowSurface(window);
SDL_RenderClear(renderer);
Wreed = TTF_RenderText_Blended(police, "Wreed", couleur);
textureWreed = SDL_CreateTextureFromSurface(renderer, Wreed);
SDL_Rect positionWreed = {10, 10, 10, 10};
SDL_RenderCopy(renderer, textureWreed, NULL, &positionWreed);
SDL_RenderPresent(renderer);
SDL_Delay(5000);
}
Если кто-нибудь знает, как это исправить, помогите, пожалуйста.