リンカーの警告:LNK4102 ~ LNK4549

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

番号 メッセージ・テキストと説明
LNK4102 export of deleting destructor symbol name; image may not run correctly

プログラムが,削除するデストラクタをエクスポートしようとしました。DLL の境界を越えて削除し,プロセス自分自身が所有していないメモリーまで開放することがあります。与えられたシンボルが .DEF ファイルにないことを確認してください。また,このシンボルがリンカー・コマンド行で /IMPORT または /EXPORT オプションの引数として指定されていないことを確認してください。

LNK4103 import of deleting destructor "symbol name"; image may not run correctly

プログラムが,削除するデストラクタをインポートしようとしました。DLL の境界を越えて削除し,プロセス自分自身が所有していないメモリーまで開放することがあります。与えられたシンボルが .DEF ファイルにないことを確認してください。また,このシンボルがリンカー・コマンド行で /IMPORT または /EXPORT オプションの引数として指定されていないことを確認してください。

LNK4104 export of symbol "symbol" should be PRIVATE

symbol は以下の 1 つです。

  • DllRegisterServer

  • DllRegisterServerEx

  • DllUnregisterServer

  • DllGetClassObject

  • DllCanUnloadNow

DLL に対してインポート・ライブラリーをビルドし,モジュール定義ファイルで上記の関数の 1 つを PRIVATE として指定せずにそれをエクスポートした時,この警告が発生します。一般的に,これらの関数は,OLE で使用されるためのみにエクスポートされます。これらの関数をインポート・ライブラリーに収容すると,ライブラリーにリンクしたプログラムが間違って呼び出し,動作が異常になることがあります。

LNK4105 no argument specified with option option; ignoring switch

この警告は,/LIBPATH オプションが設定された時のみ発生します。このオプションにディレクトリが指定されなければ,リンカーはこのオプションを無視し,この警告メッセージを生成します。ライブラリーの既存の環境設定を上書きする必要がない場合,リンカー・コマンド行から /LIBPATH オプションを削除します。ライブラリーに対する別の検索パスを使用したい場合,/LIBPATH オプションの後に別のパスを指定します。たとえば,link /libpath:c:\foo\lib bar.obj は,基本設定のディレクトリを検索する前に c:\foo\lib ディレクトリで必要なライブラリーをリンカーに検索させます。

LNK4106 "section name" section discarded due to "option" specification

option は,リンカーにセクションを破棄させます。

LNK4107 "/option" not supported by this version of MSPDBxx.DLL; ignored

MSPDBxx.DLL は,指定された option をサポートしていません。

LNK4108 /ALIGN specified without /DRIVER or /VXD; image may not run

/ALIGN オプションが /DRIVER または /VXD の指定なしで指定されました。不正な位置合わせは,オペレーティング・システムが最終実行形式ファイルのロードに失敗する原因になります。/ALIGN オプションは,ドライバや vxd をビルドする時のみに限定して使用してください。

LNK4194 /DELAYLOAD:dll name ignored

リンカーは,要求された DLL を遅延ロードできません。

LNK4195 unable to load dll name

リンカーは,要求された DLL をロードできません。

LNK4197 export "exportname" specified multiple times; using first specification

エクスポートが複数の異なった方法で指定されています。リンカーは最初の指定を使用し,残りを無視します。同じエクスポートがコマンド行 (export: を介して) と .def ファイルの両方で指定されているか,.def ファイルに異なる属性で 2 度指定されているかです。エクスポートが正確に同じ方法で複数回指定された場合,リンカーは警告を生成しません。

LNK4198 base key "keyname" not found - using default

/BASE オプションで指定された keyname は,ベース・アドレス・ファイルにありません。

LNK4199 /DELAYLOAD:dllname ignored; no imports found from dllname

dllname がエクスポートする関数を必要としないため,リンカーは dllname を無視します。

LNK4200 corrupt line number information in object file; ignored

オブジェクト・ファイルの行番号情報が壊れています。再ビルドしてください。

LNK4543 Section "section" with invalid attributes ignored

リンカーがセクション section の型を決定できないので,これを無視しました。セクションの有効な型は,textdatabss,および rdata です。

LNK4544 Symbol "symbol" specified with /IMPORT not referenced in application - ignored

/IMPORT オプションと一緒にシンボル symbol が指定されましたが,これはプログラムで参照されていませんでしたので,リンカーはこれを無視しました。

LNK4545 Container "container" specified with /IMPORT not referenced in application - ignored

/IMPORT オプションと一緒にインポート・ライブラリー (コンテナ) を指定しましたが,プログラムはライブラリーを参照していませんでした。リンカーはコンテナを無視しました。

LNK4546 Mismatch in versions detected. Container may not load. Use /VERBOSE for details.

リンカーは,インポート・ライブラリー (コンテナ) のバージョンで問題を検知しました。どのコンテナ (およびそのバージョン番号) が問題を引き起こしたのかを調べるには,/VERBOSE オプションを指定して LINK を再実行します。

LNK4547 Setting "versiontype" to version

リンカーは,バージョンに versiontype を設定しました。versiontype の値は,CURRENTVEROLDCODEVER,および OLDAPIVER です。

LNK4548 Ignoring "versiontype" version

リンカーは,versiontype のバージョン情報を無視しました。versiontype の値は,CURRENTVEROLDCODEVER,および OLDAPIVER です。

LNK4549 shared library "library" does not have any exports

共有ライブラリーがエクスポートを含んでいないため,共有ライブラリーが無視されました。