構成ファイルに従って、コンソール アプリケーションまたはウィンドウ アプリケーションになるように C++ プログラムを作成したいと考えています。GUI には WxWidget を使用しています。Windows と Linux (Buntu) で別々に行うにはどうすればよいですか。
誰かが簡単な例を提供できますか?
構成ファイルに従って、コンソール アプリケーションまたはウィンドウ アプリケーションになるように C++ プログラムを作成したいと考えています。GUI には WxWidget を使用しています。Windows と Linux (Buntu) で別々に行うにはどうすればよいですか。
誰かが簡単な例を提供できますか?
コンパイル段階でこれを行うには、条件付きコンパイルを使用すると簡単です。
構成ファイルには、必要なプリプロセッサ定義が含まれます。例えば
#define GUI
また
#define CONSOLE
次に、異なる方法でコンパイルする各ファイルに構成ファイルを含めます
#include "gui_or_console.h"
最後に、条件付きコンパイルを使用して、処理するコードをコンパイラに伝えます。
#idfef GUI
// some GUI code
#endif
#ifdef CONSOLE
// some CONSOLE code
#endif
実行時にこれを行う一般的な方法は、プログラムを Windows アプリケーションとしてコンパイルおよびリンクすることです。実行時に構成を読み取ります。GUI 用に設定されている場合は、ウィンドウを作成して作業を進めてください。コンソール モードに設定されている場合は、コンソール ウィンドウを作成し、stdout/stdin/sterr ストリームを接続して、すぐに使用できます。
このように実行されるプログラムを 1 つ作成しました。UI 全体は純粋仮想インターフェイスの背後で抽象化され、具象実装はコンソール実装と GUI 実装を提供します。実行時に、正しい型をインスタンス化します。コンストラクターは、適切なタイプのウィンドウを作成します。次に、メイン プログラムは仮想 Run メソッドを呼び出します。コンソールの実装は、main と同等のものを呼び出します。GUI 実装は、イベント ループを実行します。
非常に難しいのは、(独自のコンソール ウィンドウを起動するのではなく) コマンド ラインから起動する場合に、既存のコンソール ウィンドウにアタッチすることです。Devstudio は devstudio.com と devstudio.exe を使用してこれを行いますが、かなり複雑です。