17

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

そしてそれはそれについてです。何が間違っている可能性がありますか?

4

8 に答える 8

18

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

于 2012-12-08T11:59:39.173 に答える
10

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

于 2012-06-17T09:14:27.373 に答える
7

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

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

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

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

void WINAPI OutputDebugString(
  __in_opt  LPCTSTR lpOutputString
);

ヘッダー WinBase.h(インクルードWindows.h)

于 2012-06-17T03:49:24.407 に答える
7

Linker -> Systemプロジェクトのプロパティで、サブシステムが であることを確認し "Console (/SUBSYSTEM:CONSOLE)"ます。

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

于 2013-12-19T01:24:42.073 に答える
5

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

#define NO_STDIO_REDIRECT

それでもうまくいかない場合は、次のリンクの解決策を試してください: How can I get console output instead of stdout.txt and stderr.txt? .

于 2012-06-18T13:13:23.073 に答える
4

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

于 2012-06-17T03:00:57.643 に答える
1

F5 キーを押して Visual Studio 内からプログラムを実行していて、プログラムの終了後にコンソール ウィンドウが閉じるため、出力が表示されない可能性があります。

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

上記のすべてにより、コンソールウィンドウが画面に残ります。

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

于 2012-06-17T02:54:45.903 に答える
-3

プログラムを実行/デバッグしているときに、ビジュアルスタジオの出力ウィンドウがあります。そのウィンドウに出力が表示されるはずです。

于 2012-06-17T07:03:13.370 に答える