用于调试消息C ++的跨平台GUI应用程序控制台

时间:2013-05-13 18:03:31

标签: c++ cross-platform

我正在用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上运行。

是否有跨平台解决方案?当然,越简越好!

2 个答案:

答案 0 :(得分:1)

我不知道有任何产品在Linux世界中这样做 - 你应该从shell启动代码,输出显示在shell窗口中。

这样包装应该会有所帮助:

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

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

答案 1 :(得分:0)

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

查看log4cxx进行跨平台日志记录。这是一个非常稳定,成熟的平台。

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