文字 - xcode c++ ログ 出力




Win32アプリケーションのデバッグ出力ウィンドウに印刷するにはどうすればよいですか? (6)

私はVisual Studio 2005にロードしたwin32プロジェクトを持っています。私はVisual Studioの出力ウィンドウに物事を印刷することができますが、私の人生のためにはどうやって作業するのかはできません。 私は 'printf'と 'cout <<'を試しましたが、私のメッセージは執拗に印刷されません。

Visual Studioの出力ウィンドウに印刷する特別な方法がありますか?


Win32プロジェクトはGUIプロジェクトであり、コンソールプロジェクトではありません。 これにより、実行可能なヘッダーに違いが生じます。 その結果、あなたのGUIプロジェクトは独自のウィンドウを開く責任があります。 それはコンソールウィンドウかもしれません。 AllocConsole()を呼び出して作成し、Win32コンソール関数を使用してそれに書き込みます。


OutputDebugStringを使用できます。 OutputDebugStringは、ビルドオプションに応じてOutputDebugStringA(char const*)またはOutputDebugStringW(wchar_t const*)マップするマクロです。 後者の場合は、関数にワイド文字列を指定する必要があります。 ワイド文字リテラルを作成するには、 L接頭辞を使用します。

OutputDebugStringW(L"My output string.");

通常は、次のように_Tマクロと共にマクロバージョンを使用します。

OutputDebugString(_T("My output string."));

プロジェクトがUNICODE用にビルドされている場合は、次のように展開されます。

OutputDebugStringW(L"My output string.");

あなたがUNICODEのために建てていないなら、それは次のように広がります:

OutputDebugStringA("My output string.");

realコンソールに印刷するには、リンカーフラグ/SUBSYSTEM:CONSOLEを使用して表示させる必要があります。 特別なコンソールウィンドウは面倒ですが、デバッグの目的では非常に貴重です。

OutputDebugStringは、デバッガ内で実行されているときにデバッガの出力に出力します。


WriteConsoleメソッドを使用して、コンソールで印刷することもできます。

AllocConsole();
LPSTR lpBuff = "Hello Win32 API";
DWORD dwSize = 0;
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), lpBuff, lstrlen(lpBuff), &dwSize, NULL);

プロジェクトがGUIプロジェクトの場合、コンソールは表示されません。 プロジェクトをコンソールに変更するには、プロジェクトプロパティパネルに移動して次の項目を設定する必要があります。

  • " リンカー - >システム - >サブシステム "の値 " Console(/ SUBSYSTEM:CONSOLE) "
  • " C / C ++ - >プリプロセッサ - >プリプロセッサ定義 "で、 " _CONSOLE "定義を追加します

このソリューションは、従来の「 int main() 」エントリポイントがあった場合にのみ機能します。

しかし、あなたが私の場合(OpenGLプロジェクト)のようなものであれば、プロパティを編集する必要はありません。

AllocConsole();
freopen("CONIN$", "r",stdin);
freopen("CONOUT$", "w",stdout);
freopen("CONOUT$", "w",stderr);

printfとcoutはいつものように動作します。

ウィンドウの作成前にAllocConsoleを呼び出すと、コンソールがウィンドウの後ろに表示されます。後で呼び出すと、コンソールが先に表示されます。


小数点以下の変数を出力する場合:

wchar_t text_buffer[20] = { 0 }; //temporary buffer
swprintf(text_buffer, _countof(text_buffer), L"%d", your.variable); // convert
OutputDebugString(text_buffer); // print




console