1

リンク http://msdn.microsoft.com/en-us/library/fcc1zstk(v=vs.100).aspxに従って

32 ビット アプリは 4.00 (最小) を使用することを想定しており、64 ビット アプリは 5.02 (最小) を使用することを想定しています。

しかし、このパラメーターの重要性/意味と、そのリンクからの以下のステートメントを理解したいと思います。

「サブシステムの選択は、リンカーが選択するエントリ ポイント シンボル (またはエントリ ポイント関数) に影響します。」</p>

シャム

4

3 に答える 3

4

簡単に言えば、指定する必要があるコンソール アプリケーションを作成している/SUBSYSTEM:CONSOLE場合、およびコンソール ウィンドウを自動的に開かないウィンドウ アプリケーションを作成している場合は、/SUBSYSTEM:WINDOWS. 他のサブシステムでは、アプリケーションがカーネル モードで実行される (ただし、単純に可能というわけではありません)、ハードウェアと直接やり取りする、または Windows CE デバイスで実行されるように指定されています。

バージョンを指定する必要はほとんどありません。

リンカーによって作成された実行可能ファイルには、このオプションに応じてフラグが設定されているだけです。アプリケーションの起動を担当する Windows 機能は、このフラグを調べて、アプリケーションの起動方法を決定します (コンソール ウィンドウが接続されている場合など)。

于 2013-01-16T08:16:57.817 に答える
0

サブシステム パラメータの主な意味は、実行可能ファイルをビルドするサブシステムを決定することです。コンソール アプリケーション、Windows アプリケーション、POSIX アプリケーション、デバイス ドライバなどになるかどうか。

ドキュメントによると、バージョン番号は、実行可能ファイルが必要とするオペレーティング システム (またはサブシステム) の最小バージョンを指定します。たとえば、6.0 (Windows Vista) を指定した場合、理論上、Windows XP は実行可能ファイルの実行を拒否します。これが実際に正しいかどうかは定かではありません。また、オペレーティング システムの最小バージョンをこのように指定することは一般的ではないと思います。

エントリ ポイントへの影響については、少し雑に説明されています。サブシステムの選択がデフォルトのエントリーポイントに影響を与えると言ったほうが正確でしょう。パラメータを使用して、このデフォルトをオーバーライドできます/ENTRY

に記載され/ENTRYているように、デフォルト設定は次のとおりです。

  • /SUBSYSTEM:CONSOLE: mainCRTStartup (または wmainCRTStartup)
  • /SUBSYSTEM:WINDOWS: WinMainCRTStartup (または wWinMainCRTStartup)
  • /DLL: _DllMainCRTStartup

また、「/DLL または /SUBSYSTEM オプションが指定されていない場合、メインまたは WinMain が定義されているかどうかに応じて、リンカーはサブシステムとエントリ ポイントを選択します。」

IIRC、他のサブシステムにはデフォルトのエントリ ポイントがなく、/ENTRYオプションを明示的に使用する必要があります。

于 2013-01-16T22:40:33.153 に答える
0

あなたのプログラムにはmain_tmainなどがありWinMainます。これはあなたのプログラムの始まりです。ただし、これはプログラムが開始される真のエントリ ポイントではなく、プログラムにリンクされたランタイムから呼び出される単なる関数です。ランタイムには、通常、メイン関数が呼び出される前に必要な初期化を行う特別な関数があります。これは、ドキュメントで参照されている「エントリ ポイント」です。

サブシステムの設定は、その設定に応じて異なる「エントリ ポイント」関数を使用するようにリンカに指示しているようです。

于 2013-01-16T08:03:59.073 に答える