0

我正在用 C++ 编写游戏。我想使用 std::cout 从我的代码中打印调试消息,但由于这是一个 GUI 应用程序,因此默认情况下没有可打印的控制台。我试过简单地从 CMD 运行它,如下所示:

start Debug/hydro.exe

但无济于事。

在使用带有 Win32 项目的 Visual Studio 2012 的 Windows 8 x86_64 上,以下代码实现了我正在寻找的内容:

#include <Windows.h>
...
AllocConsole();
freopen("CONIN$", "r",stdin);
freopen("CONOUT$", "w",stdout);
freopen("CONOUT$", "w",stderr);

但是,我相信这不是跨平台的(如果我错了,请纠正我!)并且希望我的应用程序可以在 Linux 和 Mac OS X 上运行。

有没有跨平台的解决方案?当然,越简单越好!

4

2 回答 2

1

我不知道有任何产品在 Linux 世界中执行此操作 - 您应该从 shell 启动代码,并且输出出现在 shell 窗口中。

像这样包装应该有帮助:

#ifdef _WIN32
// Windows-only code here
#endif

在 Windows 外部时,代码不会被编译,在 Windows 内部时,代码将被编译!

于 2013-05-13T18:13:40.137 回答
0

如果您的代码依赖于<Windows.h>它绝对不是跨平台的。

看看log4cxx的跨平台日志记录。这是一个相当稳定、成熟的平台。

PS:祝跨平台 GUI 编程好运。GUI 编程通常是非常特定于平台的。像Qt这样的框架可能会有很大帮助,如果你在做 3D 图形,一定要使用 OpenGL 而不是 DirectX。

于 2013-05-13T18:11:51.613 回答