Процесс заканчивается в строке TTF_RenderText_Shaded

Моя программа SDL содержит:

TTF_Init();
TTF_Font *font = TTF_OpenFont("segoeui.ttf",13);
SDL_Color textColor = {0,0,0};
SDL_Color backgroundColor = {34,177,76};
SDL_Surface *myText = TTF_RenderText_Shaded(font,"Some text",textColor,backgroundColor);

Когда я запускаю программу из кнопки Build and run в Code::Blocks, проблем не возникает, но когда я запускаю программу из папки в Windows Explorer, окно открывается и закрывается напрямую, а после закрытия окна окно процесс больше не выполняется, а файлы stderr.txt и stdout.txt все еще там. Я сделал несколько тестов и выяснил, что это линия SDL_Surface *myText = TTF_RenderText_Shaded(font,"Some text",textColor,backgroundColor); похоже, это завершает процесс так же, как если бы в диспетчере задач была нажата кнопка "Завершить процесс".

Почему это так? Как я могу это исправить?

1 ответ

Решение

Вы должны установить свой шрифт с абсолютным путем, а не относительным. Если вы планируете выполнять кроссплатформенное развертывание, вы можете включить что-то вроде этого:

TTF_Font *font;

#ifdef _WIN32
    font = TTF_OpenFont("WinPath",13); // The windows path
#elif  linux
    font = TTF_OpenFont("LinuxPaht",13); // The linux path
#elif MacOS
    font = TTF_OpenFont("Mac path",13); // The mac path
#endif

if(font == null)
    // Throw an error, return or whatever.

Вы можете получить точные директивы в Detect Windows или Linux на C, C++

Другие вопросы по тегам