リンカーの警告:LNK4001 ~ LNK4039

以下の表では,第 1 列に,警告が検知された時に返される警告番号を一覧表示しています。第 2 列の第 1 行は,メッセージ・テキストを示しています。第 2 列の第 2 行目以降は,メッセージの説明を示しています。

番号 メッセージ・テキストと説明
LNK4001 no object files specified; libraries used

コマンドが,入力としてオブジェクト・ファイルを指定していませんでした。ツールは,入力として指定されたライブラリーからオブジェクトを使用しました。

LNK4002 symbol defined in object

装飾された書式で表示される与えられたシンボルは,オブジェクトでは装飾されていない書式で指定されていましたが,装飾されたシンボルにユニークに一致するものが見つかりませんでした。この警告は,常に警告 LNK4022 の前に表示され,続いて致命的なエラー LNK1152 が表示されます。

LNK4003 invalid library format; library ignored

入力ライブラリーのファイル・ヘッダが不正でした。ツールはこのライブラリーを使用しませんでした。

LNK4005 no objects used from library library

ライブラリーがコマンドで指定されましたが,このライブラリーには解決すべき参照がありませんでした。

LNK4006 symbol already defined in object; second definition ignored

装飾された書式で表示される与えられたシンボルは,二重に定義されていました。この警告が発生すると,シンボルが 2 度追加されますが,最初の書式のみが使用されます。以下のヒントを参照してください。

  • 与えられたシンボルは,/Gy でコンパイルして作成されたパッケージ関数です。このシンボルは,1 つ以上のファイルにインクルードされていますが,コンパイル間で変更されていました。シンボルを含む全てのファイルを再コンパイルしてください。

  • 与えられたシンボルは,異なったライブラリーの 2 つのメンバ・オブジェクトで異なって定義されています。

  • 絶対シンボルが 2 度定義され,それぞれの定義で異なった値を持っています。

  • ライブラリーを結合する時に,このエラー・メッセージが表示された場合,ライブラリーに既に存在しているシンボルを追加しようとしています。

LNK4010 invalid version number "number"; default version assumed

バージョン引数に指定したメジャーまたはマイナー番号 number のどちらかが不正でした。バージョン指定の各部分は,範囲 1 ~ 65535 の整数でなければなりません。バージョン引数を取るオプションには,/SUBSYSTEM および /VERSION があります。

LNK4011 unknown subsystem "argument"; default assumed

/SUBSYSTEM オプションが不正に指定されました。引数が指定されていないか,引数が予期しない形式をもっているかのどちらかです。ツールは適切な基本設定値を使用します。

LNK4012 invalid value "argument", must be keywords; option ignored

オプションに与えられた引数 argument は無効なキーワードでした。有効な引数は,キーワード一覧に示されています。

LNK4013 image size imagesize exceeds specified maximum maxsize

/BASE オプションで指定されたベース・アドレス・ファイルは,プログラムの最大の大きさを maxsize と指定していますが,maxsize はプログラムの実際の大きさよりも下回っていました,

LNK4014 cannot find member object "objectname"

LIB はライブラリーで objectname を見つけることができませんでした。/REMOVE および /EXTRACT オプションは,ファイルから削除したり,ファイルにコピーしたりするメンバ・オブジェクトの完全な名前を必要とします。完全な名前には,元のオブジェクト・ファイルのパスも含まれます。ライブラリー中のメンバ・オブジェクトの完全な名前を参照するには,DUMPBIN /ARCHIVEMEMBERS または LIB /LIST を使用します。

LNK4015 memorytype commit exceeds reserve; commit size set to size

memorytype のコミット・サイズとして指定した値が,リザーブ・サイズとして指定した値を超えていました。ツールは,コミット・サイズの値として size を使用しました。

LNK4017 keyword statement not supported for the target platform; ignored

与えられたモジュール定義文は,リンカー・ツールのこのバージョンではサポートされていません。ツールは,.DEF ファイルのこの文を無視しました。

LNK4018 too many type indexes in PDB "filename", discarding subsequent type information

プログラム・データベース (PDB) に 64K 以上の型インデックスがあります。PDB が不要な型情報を含んでいます。既存の PDB を削除し,再ビルドしてください。再ビルドしても警告が発生する場合,幾つかのモジュールをデバッグ情報なしでコンパイルしてください。

LNK4019 corrupt string table (table end); new end assumed

オブジェクト・ファイルが壊れています。ツールは問題を修正しようとしました。この警告を防ぐには,オブジェクト・ファイルを再ビルドします。詳細は,「壊れたオブジェクト・ファイル」を参照してください。

LNK4022 cannot find unique match for symbol "symbol"

LINK または LIB が,与えられた装飾されていないシンボル symbol に一致するものを複数個発見し,曖昧さを解決できませんでした。出力ファイル (.EXE.DLL.EXP,または .LIB) は生成されません。この警告の後,各重複するシンボルに対する警告 LNK4006 が表示され,最後に致命的なエラー LNK1152 が表示されます。この警告を防ぐには,装飾された書式でシンボルを指定します。装飾名を調べるには,オブジェクトで DUMPBIN を実行します。

LNK4023 base address address not a 64K multiple; assumed newaddress

/BASE オプションで指定するベース・アドレスは,64K の倍数でなければなりません。ツールは,ベース・アドレスとして newaddress を使用しました。

LNK4027 CVPACK error

LINK は,デバッグ情報を処理するために CVPACK を呼び出しましたが,以下の 1 つが発生しました。

  • 呼び出しが失敗しました。CVPACKPATH 環境変数で指定されたディレクトリに存在し,十分なメモリーがあることを確認してください。

  • CVPACK がエラーを発行しました。CVPACK が生成するエラーは CKnnnn の形式をしています。

LNK4028 option option is obsolete; ignored

与えられたオプション option はサポートされていません。LINK はこのオプションを無視し,ビルドを継続しました。

LNK4030 invalid file offset number for category; category not dumped

DUMPBIN が,与えられたカテゴリ category の情報を表示できませんでした。おそらくファイルが不正か壊れています。詳細は,「壊れたオブジェクト・ファイル」を参照してください。

LNK4031 no subsystem specified; CONSOLE assumed

/SUBSYSTEM オプションが指定されませんでしたし,LINK が入力ファイルから subsystem を決定することができませんでした。

LNK4033 converting object format from OMF to COFF

オブジェクト・ファイルの書式が OMF です。このツールは,COFF 書式でなければなりません。ファイルを永久に変換するには,EDITBIN をオプションなしでファイルに対して実行します。

LNK4037 "symbol" does not exist; ignored

シンボル symbol/ORDER オプションを使って順番を変更されませんでした。これは,シンボルがプログラムで見つからなかったためです。オーダー・ファイルのシンボルの指定を確認してください。

注意:スタティック関数名はパブリック・シンボル名ではないため,LINK はスタティック関数の順番を変更することはできません。/ORDER が指定されると,このリンカー警告はオーダー・ファイルの各シンボルに対して,それがスタティックか見つからなかった場合に生成されます。

LNK4038 displaying raw data in number units per line

/RAWDATA オプションが,書式化引数なしで指定されました。DUMPBIN は,以下のように指定されたまたは仮定されたデータ型の行毎の番号単位の書式値を仮定しました。

データ型 番号
なし 16
BYTES 16
SHORTS 8
LONGS 4
LNK4039 section "name" specified with /SECTION option does not exist

DUMPBIN または EDITBIN が,入力ファイルでセクション呼び出し名 name を見つけることができませんでした。ファイルでセクションを見つけるには,/HEADERS オプションをつけて DUMPBIN を実行します。