次の方法で共有


リンカ ツール エラー LNK1211

プリコンパイル済みの型情報が見つかりません。'filename' はリンクされていないか、または上書きされています

/Yc を使用してコンパイルされた filename オブジェクト ファイルが LINK コマンドで指定されていないか、上書きされました。

プリコンパイル済みヘッダーを使用し /yc/Z7 を指定してデバッグ ライブラリを作成する場合、Visual C++ はデバッグ情報を含むプリコンパイル済みオブジェクト ファイルを生成します。 このエラーは、プリコンパイル済みオブジェクト ファイルをライブラリに格納し、ライブラリを使用して実行可能イメージをビルドし、参照されるオブジェクト ファイルにプリコンパイル済みオブジェクト ファイルで定義されている関数への推移的な参照がない場合だけ発生します。

この状況を回避するには、次の 2 つの方法があります:

  • プリコンパイル済みヘッダーから各オブジェクト モジュールにデバッグ情報を追加する場合は、/Yd コンパイラ オプションを指定します。 この方法では、一般的に大きなオブジェクト モジュールが作成され、アプリケーションのリンク時間が長くなるため、あまり好ましくありません。

  • 関数定義を含むプリコンパイル済みヘッダー ファイルを作成する場合は、/Yl を指定し、任意の文字列の名前を渡します。 これにより、プリコンパイル済みオブジェクト ファイルにシンボルを作成し、プリコンパイル済みオブジェクト ファイルに関連付けられているプリコンパイル済みヘッダー ファイルを使用した各オブジェクト ファイル内のそのシンボルへの参照を出力します。

/Yc/Yl を使用してモジュールをコンパイルすると、コンパイラは __@@_PchSym_@00@...@symbol_name と同様のシンボルを作成します。ここで、省略記号 (...) はコンパイラによって生成された文字列を表し、オブジェクトモジュールに格納します。 このプリコンパイル済みヘッダーを使用してコンパイルするソース ファイルは、指定されたシンボルを参照します。これにより、リンカーはオブジェクト モジュールとそのデバッグ情報をライブラリからインクルードします。