VC PlusPlus:サブシステムとエントリポイント

提供:yonewiki

VC PlusPlusに戻る

概要

 プロジェクトで空のWindowを作成すると、見事なまでに何もないプロジェクトが作成されます。この場合、まずやることはmain関数を作るという作業だと思います。もっと詳しい人だと、エントリポイントとなる関数を作成するということです。そのやり方をここで纏めておきたいと思います。


 その前に、プロジェクトが本当に空っぽなので、何かファイルを作成しないとmain関数は作れないです。大事なのはプロジェクトの中にファイルを作成するということです。VisualStudioでファイルを新規作成するというメニュー項目もあるので、そちらを使うとプロジェクトとは関係のないファイルを作っただけの状態です。もし、そのようにして、プロジェクトの外部にファイルを作成したり、既存のファイルがある場合はファイルを読み込むという方法があります。それを既存の項目の追加と呼びます。以下の方法で実行できます。


  • 既存の項目の追加(Shift+alt+A) : メニュー{プロジェクト}>{既存の項目の追加}


 ふつうは既存の項目とか、間違えて外部にファイルを新規作成して、既存の項目の追加とかはやらないと思うので、新しい項目の追加というのを実行すると思います。以下の方法があります。


  • 新しいの項目の追加(Ctrl+alt+A) : メニュー{プロジェクト}>{新しいの項目の追加}

もしくは

  • ソリューションエクスプローラーにある、ソースファイルフォルダやヘッダファイルフォルダマークを右クリックして表示されるメニューの新しい項目の追加

を選択します。


 で、main関数を作るのですが、main関数のようなものは、コンパイラのオプションで制御されます。MicrosoftVisualC++もそうです。そして、プロジェクトのプロパティのサブシステムの設定の内容に従ってmain関数の名前が決まります。サブシステムの設定は以下のところにあります。


  • サブシステム: メニュー{デバッグ}>{(プロジェクト名)のプロパティ}
->ダイアログの左のツリーから {構成プロパティ}>{リンカー}の{システム}欄からサブシステムの欄の入力内容をドロップダウンリストから選択します。


 

サブシステムとエントリポイントの対応

 自分たちが今やっている程度のプログラムならコンソールアプリで十分なので  

  • コンソール (/SUBSYSTEM:CONSOLE) : main or wmain *この時のwはwidecharのwでw_char型に対応したmain関数になります。文字コードセットの選択内容に従う _tmain関数も使えます。_tmainはmain or wmainに置き換えられます。文字コードセットの設定は以下の部分にあります。マルチバイトでmain、UNICODEでwmainになります。
  • メニュー{デバッグ}>{(プロジェクト名)のプロパティ}
->ダイアログの左のツリーから {構成プロパティ}>{詳細}の{文字セット}欄からUNICODE文字セットを使用するorマルチ バイト文字セットを使用するから選択。
なので、我ら2Byte文字を使う日本国民ならば_tmainを使っても良いと思います。もちろんUNICODE文字セットを使用するにしてね。コンソールにマルチバイト文字を出力することでも日本語は使えるからSJISで表示されるコンソールを使いましょう。


  • Windows (/SUBSYSTEM:WINDOWS) : WinMain or wWinMain あるいは _tWinMain


※このようなWimMainやmainではなくて、違う名前の関数をmain関数にすることは出来ます。

  • エントリポイント: メニュー{デバッグ}>{(プロジェクト名)のプロパティ}
->ダイアログの左のツリーから {構成プロパティ}>{リンカー}>{詳細設定}のエントリポイント欄にmain関数に替わる関数名を指定します。


※サブシステムには他にネイティブ (/SUBSYSTEM:NATIVE)、EFI アプリケーション (/SUBSYSTEM:EFI_APPLICATION)、EFI ブート サービス ドライバー (/SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER)、EFI ROM (/SUBSYSTEM:EFI_ROM)、EFI ランタイム (/SUBSYSTEM:EFI_RUNTIME_DRIVER)、POSIX (/SUBSYSTEM:POSIX) とありますが、EFIなんとかはOSが起動する前に動くプログラムとかコアなものです。

※POSIX(ポシックス、ポジックス、英: Portable operating system interface)は、各種UNIXを始めとする異なるオペレーティングシステム (OS) 実装に共通のアプリケーションプログラミングインタフェース (API) を定め、移植性の高いアプリケーションソフトウェアの開発
※NATIVE(Kernel mode drivers for Windows NT)の開発向け


使わない人は総じて気にしない方がいいです。説明しきれません。他のSiteへどうぞ。といいたい所ですが、他のSiteでもそれほど、取り扱っていない感じがします。

 

VC PlusPlusに戻る