【问题标题】:code blocks 8.02 console program not outputting cout statements with SDL代码块 8.02 控制台程序不使用 SDL 输出 cout 语句
【发布时间】:2009-10-08 01:17:18
【问题描述】:

我目前在代码块 8.02 中使用 SDL-devel-1.2.13-mingw32 库。在 C:\ 上单独安装 mingw 5.1.6 后,该程序编译并运行没有错误,但我看不到最后一个系统(“暂停”);屏幕上。当我按任意键时,它当然会跳过系统(“暂停”);然后代码块告诉我它成功运行了。它也不会显示 cout

#include <iostream> #include <SDL.h> using namespace std; int main(int argc, char *argv[]) { cout << " SDL \n"; cout << endl; if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) == -1) { cerr << "Failed to initialize SDL: " << SDL_GetError() << endl; exit(1); } atexit(SDL_Quit); system("pause");` return 0; }

【问题讨论】:

  • 小细节:我用的是windows XP,我想用控制台调试更大的SDL程序。但我写这个只是为了证明我的问题。谢谢

标签: c++ console mingw sdl


【解决方案1】:

根据用于编译 SDL 的选项,控制台输出可能会重定向到名为 stdout.txt 和 stderr.txt 的文件——这是大多数 Windows 构建的默认设置。

请参阅此 wiki 文章以获取解决方案:http://www.libsdl.org/cgi/docwiki.cgi/FAQ_Console

【讨论】:

  • 我尝试了所有代码,控制台给了我外星人输出
  • *.txt 文件在哪里?
  • 在程序的工作目录中。当程序终止时,它们可能会被删除。
【解决方案2】:

这确实很旧,但是您可以在 main() 的开头添加两行以使 cout 正常工作:

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

【讨论】:

  • 取决于您使用的 SDL 版本 :) 它对我有用,抱歉,这太晚了,但是您尝试了什么?
猜你喜欢
  • 2011-06-03
  • 2018-03-01
  • 1970-01-01
  • 2021-05-12
  • 2023-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多