2013-05-13 100 views
0

我正在用C++編程一個遊戲。我想使用std :: cout從我的代碼中打印調試消息,但由於這是一個GUI應用程序,因此默認情況下沒有控制檯可以打印。我試圖簡單地從CMD運行它,像這樣:用於調試消息的跨平臺GUI應用程序控制臺C++

start Debug/hydro.exe 

但無濟於事。使用Visual Studio 2012提供Win32項目

在Windows 8 x86_64的,下面的代碼實現了什麼,我在尋找:

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

但是,我認爲,這不是跨平臺(做,如果糾正我,我錯了!),並希望我的應用程序能夠在Linux和Mac OS X上工作。

是否有跨平臺的解決方案?當然,越簡單越好!

+1

如果你想「控制檯」調試消息,並使用'std :: cout',只需從終端窗口運行程序?大多數程序(遊戲或其他)都是這樣做的。 – 2013-05-13 18:07:23

+0

我試過(這是我如何解決Linux上的程序),但沒有打印。我正在使用std :: cout。 – OMGtechy 2013-05-13 18:08:26

回答

1

我不知道任何在Linux世界中都會這樣做的產品 - 您需要從shell啓動代碼,並且輸出會出現在shell窗口中。

包裝這應該幫助:

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

當Windows之外,代碼不會被編譯,當Windows內部的代碼會被編譯!

+0

#ifdef _WIN32作品:) – OMGtechy 2013-05-13 18:24:34

+0

這是一個宏的作品,是的。我希望我可以傳達這個原則,而不必查看相關的宏被稱爲...;) – 2013-05-13 18:30:06

+0

只是編輯它以保存閱讀所有評論的人:) – OMGtechy 2013-05-13 23:12:33

0

如果您的代碼取決於<Windows.h>那麼它肯定不是跨平臺的。

查看log4cxx進行跨平臺記錄。這是一個非常穩定,成熟的平臺。 PS:用跨平臺的GUI編程祝你好運。 GUI編程通常非常特定於平臺。像Qt這樣的框架可能會有很大的幫助,如果你正在做3D圖形,一定要使用OpenGL而不是DirectX。

+0

我目前使用SFML,儘管我也對Qt感興趣!我現在來看看log4cxx,謝謝!如果有效,我會將其標記爲解決方案。 – OMGtechy 2013-05-13 18:14:43

+0

另一種解決方案適用於我,而且容易得多。謝謝你! – OMGtechy 2013-05-13 18:24:03

+0

@JoshuaGerrard不是Windows程序員,我想我可能誤解了你的問題。你說得對,log4cxx並沒有真正解決你的問題,因爲我現在明白了。雖然在另一種解決方案的基礎上使用它可能仍然很好,但它比使用標準輸出/錯誤更有效。 – 2013-05-13 19:25:59