没有带有SDL的stdout.txt

No stdout.txt with SDL

本文关键字:stdout txt SDL      更新时间:2023-10-16

我正在开发一个小游戏,使用C++和SDL2,在Windows 7下使用代码::块12.11。我使用的是mingw32-gcc编译器,下载了SDL2的标准预编译Windows发行版(现在是2.0.1),并使用i686-w64-mingw32版本。到目前为止,一切都正常,我得到了图形输出,SDL_ttf扩展也正常工作。

唯一一件从一开始就不起作用的事情是按预期从SDL获得一个txt文件中的stdout:

  • 不管我做什么,我从来没有在任何地方得到stdout.txt或stderr.txt,甚至一次也没有看到这些文件被创建过。

  • 这些文件也不会在运行时创建,也不会在程序关闭时删除,它们根本不会创建。

  • 当我将程序编译为控制台应用程序时,我会在控制台中获得SDL错误输出,但根本没有cout、printf或fprintf(stdout…)(尝试了所有三种)。

  • 在没有SDL的情况下编程时,控制台stdout输出工作正常。

所以问题不是将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;
}

我正在使用-g和-std=c++0x进行编译。

我正在链接mingw32、SDL2main、SDL2、SDL2_ttf(按顺序)和mwindows。

为了查看控制台,我将其编译为控制台应用程序,并在执行结束时使用Pause选项。

我对Code::Blocks还很陌生,还没有深入了解编译器和调试器的各种选项。

有人有主意吗?我的链接顺序错了吗?链接错误的东西?我的主要功能错了吗?

已解决(简单得令人尴尬):

SDL1.2将其输出到文件中,SDL2没有。然而,由于SDL 2是新的,因此网络上的大多数信息(toturials等)都是关于SDL 1.2的。

此外,使用-mwindows进行编译会将所有stdout和stderr发送为null。

编译而不用解决我的问题。