Visual C++プロジェクトで「printf」を使用しようとしていますが、機能しません。 Lazy Fooのチュートリアルを使用して、プロジェクトにSDLをセットアップしましたが、それを再生しても、printfは何もしません。
#include "SDL.h"
#include <stdio.h>
int main( int argc, char* args[] ) {
printf("Testing");
return 0;
}
出力は次のようになります。
The program '[4664] SDL Testing.exe: Native' has exited with code 0 (0x0).
そして、それはそれについてです。何が悪いのでしょうか?
SDLはデフォルトでstdoutをファイルstdout.txt
にリダイレクトします。プログラムの作業ディレクトリにあります。
プロジェクトのプロパティを表示し、linker-> system-> subsystemに移動して、3番目のオプションであるCONSOLEに変更します。それでいい
プロジェクトのプロパティの_Linker -> System
_で、SubSystemが"Console (/SUBSYSTEM:CONSOLE)"
であることを確認します。
これにより、プログラムの実行時に別のコンソールウィンドウが表示されます。現在のエントリポイントがメインでない場合でも、これを行う場合は、それに変更する必要があります。
すべてが機能し、画面に画像を表示することさえできましたが、メッセージを出力する方法がないとプログラムできません
これは、コンソールではなくウィンドウを使用できることを意味すると思います。
何かを出力ウィンドウに記録したい場合は、 OutputDebugString
を使用します:
文字列をデバッガーに送信して表示します。
void WINAPI OutputDebugString( __in_opt LPCTSTR lpOutputString );
Header
WinBase.h
(含むWindows.h
)
NO_STDIO_REDIRECTを定義してみてください。
#define NO_STDIO_REDIRECT
それが機能しない場合は、このリンクの解決策を試してください: stdout.txtとstderr.txtの代わりにコンソール出力を取得するにはどうすればよいですか? .
Printfは通常、コンソールを更新するために改行を必要とします。最後に「\ n」文字を追加して、プログラムを再実行します。
Visual Studio内からF5キーを押してプログラムを実行しており、プログラムが終了するとコンソールウィンドウが閉じるため、おそらく出力は表示されません。
あなたは3つのことの1つを行うことができます-
returnステートメントにブレークポイントを置きます。
returnステートメントの前にgetchar()ステートメントを置きます。
F5キーの代わりにCtrl + F5キーを押してプログラムを実行します。
上記のすべては、コンソールウィンドウが画面に残るのを引き起こします。
コマンドプロンプト(cmd.exe)から直接EXEを実行することもできます。