10

VS2010 (VC100) を使用するように古いソリューションをアップグレードしようとしています。

stdafx.cpp が stdafx.h からプリコンパイル済みヘッダー stdafx.pch を作成するようにセットアップしました。次に、stdafx.h を含む他のすべての .cpp ファイルは、プリコンパイル済みヘッダーを使用するように指示されます。

これらの投稿は、私がここまで到達するのに役立ちました:

リリースモードでビルドすると、すべて問題ありません。ただし、デバッグモードでビルドしようとすると、次のようなエラーが大量に発生します。

エラー 1 エラー C2859: [削除済み]\debug\vc100.idb は、このプリコンパイル済みヘッダーの作成時に使用された IDB ファイルではありません。プリコンパイル済みヘッダーを再作成してください。

この .idb ファイルは、Visual Studio によって作成された中間デバッグ ファイルだと思います。

このエラーが発生するのはなぜですか? つまり、プリコンパイル済みヘッダーを作成するときに、この .idb ファイルを使用しなかったのはなぜでしょうか?

回答を得るために、どのような情報が必要なのかわかりません。他に提供する必要がある情報があるかどうかを尋ねてください。

4

5 に答える 5

5

同僚のおかげで答えが得られました。

問題は、stdafx.cpp のデバッグ情報形式がプログラム データベース (/Zi) に設定されていたのに対し、他のすべてのファイルはエディット コンティニュのプログラム データベース (/ZI) に設定されていたことです。

それらをすべてエディット コンティニュ用のプログラム データベース (/ZI) に変更し、完全な再構築を実行すると、問題が解決しました。

アップグレードがどういうわけかそれを台無しにしたと思います。

于 2010-07-01T22:29:47.977 に答える
0

リリース ビルドが [削除]\release\vc100.idb ではなく [削除]\debug\vc100.idb ファイルを書き込むように構成されている可能性がありますか? リリース ビルドのプロジェクト設定を確認し、そのようなハードコードされたパス コンポーネントがないことを確認してください。

于 2010-07-01T07:09:12.073 に答える
0

Visual Studio 2008でこのエラーを修正した方法は次のとおりです。

バックグラウンド:

  • 2 つのサブプロジェクトを含むソリューションがあります。
  • 1 つのプロジェクトが .dll をコンパイルします。
  • 1 つのプロジェクトは、この .dll を使用した .exe をコンパイルします。
  • .exe プロジェクトは .dll プロジェクトに依存しています。
  • 問題: 両方のプロジェクトが同じディレクトリに出力をダンプしていました。つまり、"OutPutDirectory" と "IntermediateDirectory" の両方がルートの共通ディレクトリ "../$(ConfigurationName)" に書き込むように設定されていました。

エラーの原因:

  • このエラーの原因は、.dll プロジェクトのコンパイル時に、.exe ディレクトリと同じディレクトリにプリコンパイル済みヘッダー (*.pch) が作成され、.exe プロジェクトのコンパイル時に、プリコンパイル済みヘッダーが即座に上書きされたためです。 (*.pch) .dll プロジェクトから。

修正:

  • これを修正するために、両方のサブプロジェクトの「IntermediateDirectory」を「temp」に変更して、一時ファイル (プリコンパイル済みヘッダー ファイルを含む) が異なるディレクトリに書き込まれるようにしました。
于 2010-07-05T15:22:39.753 に答える