web-dev-qa-db-ja.com

Printfは出力するものを何も印刷していませんか? C ++ SDL

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).

そして、それはそれについてです。何が悪いのでしょうか?

11
Qasim

SDLはデフォルトでstdoutをファイルstdout.txtにリダイレクトします。プログラムの作業ディレクトリにあります。

8
jrok

プロジェクトのプロパティを表示し、linker-> system-> subsystemに移動して、3番目のオプションであるCONSOLEに変更します。それでいい

17
DaKrazyKatt

プロジェクトのプロパティの_Linker -> System_で、SubSystemが"Console (/SUBSYSTEM:CONSOLE)"であることを確認します。

これにより、プログラムの実行時に別のコンソールウィンドウが表示されます。現在のエントリポイントがメインでない場合でも、これを行う場合は、それに変更する必要があります。

7
thiagoh

すべてが機能し、画面に画像を表示することさえできましたが、メッセージを出力する方法がないとプログラムできません

これは、コンソールではなくウィンドウを使用できることを意味すると思います。

何かを出力ウィンドウに記録したい場合は、 OutputDebugString を使用します:

文字列をデバッガーに送信して表示します。

void WINAPI OutputDebugString(
  __in_opt  LPCTSTR lpOutputString
);

HeaderWinBase.h(含むWindows.h

6
ta.speot.is

NO_STDIO_REDIRECTを定義してみてください。

#define NO_STDIO_REDIRECT

それが機能しない場合は、このリンクの解決策を試してください: stdout.txtとstderr.txtの代わりにコンソール出力を取得するにはどうすればよいですか? .

4
talles

Printfは通常、コンソールを更新するために改行を必要とします。最後に「\ n」文字を追加して、プログラムを再実行します。

3
Shawn Buckley

Visual Studio内からF5キーを押してプログラムを実行しており、プログラムが終了するとコンソールウィンドウが閉じるため、おそらく出力は表示されません。

あなたは3つのことの1つを行うことができます-
returnステートメントにブレークポイントを置きます。
returnステートメントの前にgetchar()ステートメントを置きます。
F5キーの代わりにCtrl + F5キーを押してプログラムを実行します。

上記のすべては、コンソールウィンドウが画面に残るのを引き起こします。

コマンドプロンプト(cmd.exe)から直接EXEを実行することもできます。

1
Superman