2011-07-23 9 views
0
私が使用

:Visual StudioでのOutputDebugStringエラー

OutputDebugString(L"My error"); 

2010、代わりに "マイエラー" を表示する、私は窓にちょうど "ERROR" を取得します。

enter image description here

は、どのように私はこの問題を解決するのですか?

+0

表示されているもののスクリーンショットを含めることはできますか? –

+0

@Cody Grey - done – Yakov

+3

これはステータスバーに表示されていますか?それがどこに現れているのかは分かりません。 Visual Studioでは、これが出力またはイミディエイトウィンドウに表示されます。それはどこですか? –

答えて

5

明示的にUNICODE文字列を渡すので、明示的にOutputDebugStringW()を呼び出すことをお勧めします。

UNICODEプリプロセッサシンボルは、あなたのコンパイル単位で定義されていない場合はそれ以外の場合は、機能(OutputDebugStringA())のANSIバージョンは、サポートしていないUNICODE文字列と呼ばれて終わるだろうし、それなるはずですコンパイルエラーです。

EDIT:OutputDebugString()を使用してアプリケーションのステータスバーに文字列を書き込むことはできません。 OutputDebugString()は、渡した文字列のみをデバッガに送信します。

ステータスバーにテキストを書き込むには、適切なAPIを使用する必要があります。あなたの場合、wxStatusBar::SetStatusText()はこのトリックを行うべきです。

+4

ANSI文字列が必要な関数にUnicode文字列を渡すと、コンパイルエラーが発生するはずです。 –

+0

@Cody、確かに、コンパイラは 'char *'を 'wchar_t * 'から伝えることができるはずですが、C++なので、暗黙の変換コンストラクタとキャスト演算子*はそれを混乱させるでしょう。あなたのコメントをありがとうございました:) –

+0

それはまだ動作しません!私は、UNICODEプリプロセッサシンボルが定義されていることを確認し、OutputDebugStringW(これは、UNICODEが定義されている場合OutputDebugStringがOutputDebugStringWとして定義されているマクロによって行われます:#ifdef UNICODE の#defineのOutputDebugString OutputDebugStringW の#else の#defineのOutputDebugString OutputDebugStringA #endifの//!UNICODE – Yakov

関連する問題