5.5.3 補助形式3:弱い外部参照

「弱い外部参照」はオブジェクト ファイルのリンク時に柔軟性を提供するためのメカニズムです。モジュールは未解決の外部シンボル(sym1)を含むことがありますが、sym1がリンク時に存在しない場合に、代わりに別の外部シンボル(sym2)を使って参照を解決することを示した補助レコードを含むことができます。

sym1の定義がリンクされた場合には、そのシンボルへの外部参照は普通に解決されます。sym1の定義がリンクされない場合には、sym1のための弱い外部参照は代りにすべてsym2を参照します。外部シンボルsym2は常にリンクされなければなりません。通常は、sym1への弱い外部参照を含んでいるモジュール内で定義されます。

弱い外部参照はEXTERNALストレージ クラス、UNDEFセクション番号、および値0を持つシンボル テーブル レコードによって表されます。弱い外部参照シンボル レコードの後には、下記の形式の補助レコードが続きます。

オフセット サイズ フィールド 解説
0 4 TagIndex sym1が見つからないときにリンクされるシンボルsym2のシンボル テーブル インデックスです。
4 4 Characteristics IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARYの値です。これはsym1のためのライブラリ検索が行われないことを示します。

IMAGE_WEAK_EXTERN_SEARCH_LIBRARYの値です。これはsym1のためのライブラリ検索が行われることを示します。

IMAGE_WEAK_EXTERN_SEARCH_ALIASの値です。これはsym1がsym2の別名であることを示します。

8 10 未使用。

WINNT.Hでは特性フィールドは定義されていません。代わりにTotal Sizeフィールドが使われます。


戻る