Khr*_*ris 5 c++ windows sdl stdout output
我正在使用C++和SDL2在Windows 7下使用Code :: Blocks 12.11开发一个小游戏.我正在使用mingw32-gcc编译器并下载SDL2的标准预编译Windows发行版(现在是2.0.1)并使用i686 -w64-mingw32版本.到目前为止,东西正在工作,我正在获得图形输出,SDL_ttf扩展也可以工作.
从一开始就没有用过的唯一一件事是将我的stdout按照预期从SDL的txt文件中获取:
无论我做什么,我都不会在任何地方获得stdout.txt或stderr.txt,甚至没有看到创建过的文件.
这些文件也不是在运行时创建的,在程序关闭时也会被删除,它们根本就不会被创建.
当我将程序编译为控制台应用程序时,我在该控制台中得到SDL错误输出,但根本没有cout或printf或fprintf(stdout ...)(尝试全部三个).
在没有SDL的情况下编程时,控制台标准输出可以正常工作.
所以问题不是将stdout重新路由到控制台,这是关于SDL和stdout的常见问题,问题是我甚至没有按照预期将输出写入相应的文件.
SDL 2.0.0和SDL 2.0.1都会发生这种情况,包括预编译和未编译.
这是我的主要功能的样子.myGame.GameStart()运行一切,包括清理.我对C++很新,所以这里也可能有一些奇怪的错误.
#include "SDL.h"
#include "SDL_ttf.h"
int main(int argc, char* argv[]) {
TTF_Init();
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_TIMER|SDL_INIT_EVENTS);
SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
MyGameClass myGame;
myGame.GameStart();
SDL_Quit();
TTF_Quit();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用-g和-std = c ++ 0x进行编译.
我正在链接mingw32,SDL2main,SDL2,SDL2_ttf(按此顺序)和mwindows.
要查看控制台,我将其编译为控制台应用程序,并在执行结束时使用"暂停"选项.
我是Code :: Blocks的新手,我没有深入研究编译器和调试器的各种选项.
有人有想法吗?我是以错误的顺序链接的吗?链接错误的东西?我的主要功能是错的吗?
解决了(令人尴尬的简单):
SDL 1.2输出到文件中,SDL 2没有.然而,由于SDL 2是新的,因此网上的大多数信息(toturials等)大约是SDL 1.2.
此外,使用-mwindows进行编译会将所有stdout和stderr发送为null.
编译时没有解决我的问题.
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |