/BASE (ベース アドレス)

プログラムのベース アドレスを指定します。

構文

/BASE:{address[,size] | @filename,key}

解説

Note

セキュリティ上の理由から、実行可能ファイルのベース アドレスを /DYNAMICBASE 指定する代わりに、このオプションを使用することをお勧めします。 /DYNAMICBASE は、Windows のアドレス空間レイアウトランダム化 (ASLR) 機能を使用して、読み込み時にランダムにリベースできる実行可能イメージを生成します。 /DYNAMICBASE オプションは既定でオンになっています。

リンカー オプションは /BASE 、プログラムのベース アドレスを設定します。 EXE または DLL ファイルの既定の場所をオーバーライドします。 EXE ファイルの既定のベース アドレスは、32 ビット イメージの場合は0x400000、64 ビット イメージの場合は0x140000000です。 DLL の場合、既定のベース アドレスは、32 ビット イメージの場合は 0x10000000、64 ビット イメージの場合は 0x180000000 になります。 アドレス空間レイアウトランダム化 (ASLR) をサポートしていないオペレーティング システム、またはオプションが /DYNAMICBASE:NO 設定されている場合、オペレーティング システムは最初に、指定されたベース アドレスまたは既定のベース アドレスでプログラムの読み込みを試みます。 空き領域が不足している場合、システムはプログラムを再配置します。 再配置を防ぐには、このオプションを使用します /FIXED

64K の倍数でない場合 address 、リンカーはエラーを発行します。 必要に応じて、プログラムのサイズを指定できます。 指定したサイズにプログラムが収まらない場合、リンカーは警告を発行します。

コマンド ラインでベース アドレスを指定するもう 1 つの方法は、ベース アドレス応答ファイル使用することです。 ベース アドレス応答ファイルは、プログラムが使用するすべての DLL のベース アドレスと省略可能なサイズ、および各ベース アドレスの一意のテキスト キーを含むテキスト ファイルです。 応答ファイルを使用してベース アドレスを指定するには、アット マーク (@) の後に応答ファイルの名前、コンマ、 filenameファイル key で使用するベース アドレスの値を使用します。 リンカーは、環境変数で指定されたディレクトリ内で、指定されたパスまたはパスが指定されていない場合にLIB検索filenameします。 各行は filename 1 つの DLL を表し、次の構文があります。

keyaddress [size] ;comment

key 英数字の文字列であり、大文字と小文字は区別されません。 通常は DLL の名前ですが、必須ではありません。 その key 後に、C 言語、16 進数、または 10 進表記のベース address と、省略可能な最大値 sizeが続きます。 3 つの引数はすべて、スペースまたはタブで区切ります。 指定した size アドレスがプログラムに必要な仮想アドレス空間より小さい場合、リンカーは警告を発行します。 A comment はセミコロン (;) で指定され、同じ行または別の行に置くことができます。 リンカーでは、セミコロンから行末までのすべてのテキストが無視されます。 次の例は、このようなファイルの一部を示しています。

main   0x00010000    0x08000000    ; for PROJECT.exe
one    0x28000000    0x00100000    ; for DLLONE.DLL
two    0x28100000    0x00300000    ; for DLLTWO.DLL

これらの行を含むファイルの名前が DLLS.txt である場合、次のコマンド例ではこの情報が適用されます。

link dlltwo.obj /dll /base:@dlls.txt,two

ベース アドレスを設定するもう 1 つの方法は、or LIBRARY ステートメントで引数をBASENAME使用することです。 オプションとオプションは /BASE 、ステートメントと /DLL 同じです LIBRARY

Visual Studio 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[リンカー]>[詳細] プロパティ ページを選択します。

  3. [ベース アドレス] プロパティを変更します。

このリンカーをコードから設定するには

関連項目

MSVC リンカーのリファレンス
MSVC リンカー オプション