SDL取消stdout和stderr的重定向

SDL取消stdout和stderr的重定向
SDL里将所有stdout和stderr重定向到了stdout.txt和stderr.txt文件中,在学习SDL的过程中,每次要打开一个文本文件看日志很麻烦。之前也遇到这个问题,没有解决,这次特意上网找了下,终于得以解决。

参考解决方案地址: http://www.gamedev.net/community/forums/topic.asp?topic_id=371770

下面说下解决办法。
SDL源码src\main\win32目录下有个SDL_win32_main.c这个文件,里面处理了输出流的重定向。有这么几句:
#ifndef NO_STDIO_REDIRECT
    
else   {
        redirect_output();
    }

#endif

可以看到NO_STDIO_REDIRECT这么一个条件,因为这是在编译过程中选择的,而SDL代码里并没有关于NO_STDIO_REDIRECT的定义,如果直接通过lib链接的话,肯定是会redirect的。所以我们的做法就是在compile时加入define选项重新编译这段源码,以后如果想要重定向时,去掉define选项即可。参考上面网站的做法(有所不同,他的办法我没有成功):
1、将SDL_win32_main.c加入项目中;
2、去掉链接库选项-lSDLmain;
3、在编译SDL_win32_main.o的时候加入-DNO_STDIO_REDIRECT选项(或者在SDL_win32_main.c中加入#define NO_STDIO_REDIRECT一句)。

这样就一切OK了,看吧。
SDL取消stdout和stderr的重定向_第1张图片

你可能感兴趣的:(SDL取消stdout和stderr的重定向)