/ENTRY (エントリ ポイント シンボル)
/ENTRY:function
解説
それぞれの文字について以下に説明します。
- 機能性
.exe ファイルまたは DLL に対してユーザーが定義した開始アドレスを指定する関数。
解説
/ENTRY オプションは、.exe ファイルまたは DLL の開始アドレスのエントリ ポイント関数を指定します。
指定する関数は、呼び出し規約 __stdcall で定義されている必要があります。 パラメーターと戻り値は、プログラムがコンソール アプリケーションか、Windows アプリケーションか、または DLL かによって異なります。 エントリ ポイントの設定は、リンカーに任せることをお勧めします。このようにすると、C のランタイム ライブラリが正確に初期化され、静的オブジェクト用の C++ のコンストラクターが実行されます。
既定では、先頭アドレスは C のランタイム ライブラリ内の関数名になります。 リンカーは、プログラムの属性に応じて関数名を選択します。次の表は、関数名とそれに対応する既定のアプリケーションです。
関数名 |
既定 |
---|---|
mainCRTStartup (または wmainCRTStartup) |
/SUBSYSTEM:CONSOLE を使ってビルドされたアプリケーション。main 関数 (または wmain 関数) を呼び出します。 |
WinMainCRTStartup (または wWinMainCRTStartup) |
/SUBSYSTEM:WINDOWS を使ってビルドされたアプリケーション。WinMain 関数 (または wWinMain 関数) を呼び出します。この場合、WinMain (または wWinMain) は __stdcall で定義されている必要があります。 |
_DllMainCRTStartup |
DLL ファイル。DllMain 関数がある場合は、この関数を呼び出します。この場合、DllMain は __stdcall で定義されている必要があります。 |
/DLL オプションまたは /SUBSYSTEM オプションを指定しない場合は、main または WinMain が定義されているかどうかに応じて、サブシステムおよびエントリ ポイントが選択されます。
main 関数、WinMain 関数、および DllMain 関数の 3 つの関数は、ユーザー定義のエントリ ポイントの形式です。
マネージ イメージを作成する場合は、/ENTRY で指定された関数に、(LPVOID var1, DWORD var2, LPVOID var3) の署名が必要です。
独自の DllMain エントリ ポイントを定義する方法については、「ランタイム ライブラリの動作」を参照してください。
Visual Studio 開発環境でこのリンカー オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「Visual C++ プロジェクトのプロパティの設定」を参照してください。
[リンカー] フォルダーをクリックします。
[詳細] プロパティ ページをクリックします。
[エントリ ポイント] プロパティを変更します。
このリンカーをコードから設定するには
- EntryPointSymbol を参照してください。