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

用于调试消息的跨平台GUI应用程序控制台C++; 我正在用C++编写一个游戏。我想使用std::cout从代码中打印调试消息,但由于这是一个GUI应用程序,因此默认情况下没有可打印的控制台。我尝试过简单地从CMD运行它,如下所示: start Debug/hydro.exe,c++,cross-platform,C++,Cross Platform,但是没有用 在使用Visual Studio 2012和Win32项目的Windows 8 x86_64上,以下代码实现了我的目标: #include <Windows.h> ... AllocConsole(); freopen("CONIN$", "r",stdin); freopen("CONOUT$", "w",stdout); freopen("CONOUT$", "w",stderr); #包括 ... allocsole(); freopen(“CONIN$”,“r”

但是没有用

在使用Visual Studio 2012和Win32项目的Windows 8 x86_64上,以下代码实现了我的目标:

#include <Windows.h>
...
AllocConsole();
freopen("CONIN$", "r",stdin);
freopen("CONOUT$", "w",stdout);
freopen("CONOUT$", "w",stderr);
#包括
...
allocsole();
freopen(“CONIN$”,“r”,标准);
freopen(“CONOUT$”、“w”、stdout);
freopen(“CONOUT$”,“w”,标准);
但是,我相信这不是跨平台的(如果我错了,请纠正我!),我希望我的应用程序能够在Linux和MacOSX上运行


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

如果您的代码依赖于
,那么它肯定不是跨平台的

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


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

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

这样包装应该有帮助:

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

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

如果需要“控制台”调试消息,只需从终端窗口运行程序,并使用
std::cout
?大多数程序(游戏或其他)都是这样做的。我试过这个(这是我在Linux上解决这个程序的方法),但没有打印出来。我已经在使用std::cout了。我现在正在使用SFML,尽管我对Qt也很感兴趣!现在我来看看log4cxx,谢谢!如果它有效,我将把它标记为解决方案。另一个解决方案对我有效,而且简单得多。谢谢你@乔舒亚杰拉德不是Windows程序员,我想我可能误解了你的问题。你是对的,log4cxx并没有像我现在理解的那样真正解决你的问题。尽管在其他解决方案的基础上使用它可能仍然很好,以获得比仅使用标准输出/错误更好的日志记录。是的,它看起来确实很有趣,所以它仍然是有用的信息:)这是一个有效的宏,是的。我希望我可以传达这一原则,而不必查看相关的宏名……)