とWin32で、私はLinux上での楽しみのためのSDL2アプリケーションを開発する、しかし私は、Windowsもそれをテストすることなく、Linux以外のユーザーのためにも構築します(私はまったくのWindowsを持っていない、ありませんでした)。私はmingwをクロスコンパイルに使用しています。すべてうまく動作しますが、1つのこと。アプリケーションには、Cで単純なprintf()を使用するコマンドラインスイッチ/メッセージ/ヘルプもいくつかありますが、Windowsでは単純に動作しません。出力は表示されません。私はこれを見つけた:setvbuf (stdout, NULL, _IONBF, 0);
しかしそれは助けなかった。また、私は様々な文書でmingwのと-mconsole
の-mwindows
スイッチを見つけましたが、私は十分にWindowsを知っていないので、私は物事が私のシステム(Windowsの場合)に、この奇妙に取り組むべきか見当がつかない。など、これらのメッセージに示さ/Cのprintf()mingwの
0
A
答えて
1
私はLinuxのプログラムと同じ振る舞いを持つウィンドウがないことを知っています。
-mwindows
がなくても(他の多くの機能は別として)、出力はstdoutに送られ、cmdで表示されます(そして、パイプ経由で他のプロセスstdinに転送できます)。追加のコンソールウィンドウを開いて出力します。 -mwindows
で
は、コンソールにリンクされ、もはやはstdioません。出力をリダイレクトできますが、表示されません(例:your_program.exe | cat
は出力を表示しますが、標準ウィンドウにはcat
はありません)。ただし、このモードではコンソールウィンドウは自動的に開きません。あなたはまだあなたのための罰金とすることができる(手動でコンソールを作成(または親プロセスのコンソールを継承)と(freopen("CONOUT$", "w", stdout)
で)それに標準出力をリダイレクトしますが、これは「真」stdioのではないでしょうし、あなたが他のプロセスへのパイプをすることはできません)。
関連する問題
- 1. MinGWのC++リンカプログラミングエラー
- 2. C++、mingwの、 `libiconvを」
- 3. C to C++ printf
- 4. printf Cの変数
- 5. Cのprintf()関数
- 6. C++ MinGWリンカーエラー_ZNSt7__cxx1112basic_stringlcSt11char_traitslcESalcEE10_M_replaceEjjPKcj
- 7. C/C++ - printf weird odd
- 8. mingW内の標準Cライブラリ
- 9. C - のprintfオプションの行動
- 10. Linux Cソケットサーバーprintfの問題
- 11. CのセグメンテーションフォールトPrintf()とScanf()
- 12. Cのprintf(%* s)説明
- 13. C言語のprintfフロートエラー
- 14. c - printf( "%s")は追加の@
- 15. C printf NSDATA(Objective C type)
- 16. `printf`の%* c%* cとは何ですか?
- 17. Cプログラミングprintf( "%d"、50.2);
- 18. C++のprintf%fのが、ユーザーの国
- 19. MingW C++コンパイルエラーWin 7 x64
- 20. Cのprintfのフラグと修飾子
- 21. なぜのprintfは( "%のC"、1)1
- 22. C:のprintf()(フォークで)次のコードで
- 23. Cのprintf()の異常な動作?
- 24. エラー:予想 ';' の前に 'printfの' C
- 25. Link Visual C againts MinGWの静的ライブラリ
- 26. MinGWからVisualStudioへのCコンパイル(nmake)
- 27. printfとwprintfを単一のCコード
- 28. C、printfループと行の変更
- 29. printf()Cの奇妙な結果
- 30. C printfの出力を外す
私は見て、ありがとう。 -mwindowsがなければ、新しいコンソールが自動的に開くか、最初の出力でのみ開きますか?どういうわけか、私は既にコンソールを持っているか、新しい_開いていることをテストすることはできますか? stdioはバッファされていますか?私はprintf()のは、freopen()トリック、古いメッセージが失われている場合、右(私は - mwindows)を意味すると思いますか?一般に、-mwindowsを使用せずに、新しくオープンしたcmdウィンドウを制御することができます(すでにテスト済みの場合はテストします)。私は、それを閉じたり、私がすでに持っているかどうかをテストします。多くの可能な初心者の質問には申し訳ありません。ありがとう! –
私は窓の専門家ではありませんが、あなたのほとんどが正しいと思われると言います。私はWindowsが基本的にコンソールとWindowsのアプリケーションを分離するので、混乱の大部分が起こると思います。コンソールアプリケーションのコンソールウィンドウは 'main'の前に表示され、プログラムが終了すると自動的に閉じます。 Windowsアプリケーションでは、親のプロセスコンソールにアタッチするために手動で 'AllocConsole'または' AttachConsole(-1) 'を実行するか、オプションでコマンドラインを切り替えて実行します。 stdin/stdout/stderrを再接続し、必要に応じてバッファリングを無効にします。 – keltar
もう一度ありがとう!私にとっては、あなたは特に自分自身に比べて窓の専門家です:)私はそれらの提案された機能を見ていきます。 –