gpt4 book ai didi

c++ - 没有带有 SDL 的 stdout.txt

转载 作者:可可西里 更新时间:2023-11-01 13:29:45 24 4
gpt4 key购买 nike

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

唯一从一开始就没有奏效的是按预期从 SDL 获取我的 stdout 到 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;
}

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

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

为了查看控制台,我将其编译为控制台应用程序并使用选项 Pause when execution ends。

我是 Code::Blocks 的新手,我还没有深入研究编译器和调试器的各种选项。

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

最佳答案

已解决(非常简单):

SDL 1.2 会输出到文件,SDL 2 不会。然而,网上的大多数信息(教程等)都是关于 SDL 1.2 的,因为 SDL 2 是新的。

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

不编译解决了我的问题。

关于c++ - 没有带有 SDL 的 stdout.txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20838840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com