Отсутствие вывода в консоль Windows при использовании SDL. Решение
2012-07-29 17:25:06
Ратмир Карабут

Работая с библиотекой SDL в Code::Blocks для Windows, я обнаружил, что, хотя окошко консоли и появляется при запуске программы, какой-либо вывод в него отсутствует (за исключением финального сообщения "Exited cleanly"), несмотря на расставленные для удобства отладки вызовы printf. Так как программа работала в консольном режиме (без флага -mwindows для линкера, с main вместо WinMain в качестве точки входа), какое-то время я находился в недоумении, но, взглянув в каталог с выходным бинарником, увидел в нем файлы stderr.txt и stdout.txt.

Оказывается, перенаправлением в них консольного вывода занимается как раз SDL, при вызове функции SDL_Init() - вернуть вывод в окошко можно, вставив сразу после SDL_Init() следующее:

freopen( "CON", "w", stdout ); freopen( "CON", "w", stderr );

После этого, как можно догадаться, потоки stdout и stderr будут отданы логическому устройству CON и попадут, как положено, в стандартную консоль Windows.

Приложения