Процесс заканчивается в строке 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++