181

Visual Studio で C++ ソリューションをビルドすると、xxxxx.pch ファイルが見つからないというメッセージが表示されます。プリコンパイル済みヘッダーを取り戻すために不足している設定はありますか?

完全を期すための正確なエラーは次のとおりです。

Error   1   fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
4

12 に答える 12

489

注: IDE の以降のバージョンでは、関連ファイルのデフォルト名に「stdafx」ではなく「pch」が使用される場合があります。以下の手順では、stdafx を pch に置き換える必要がある場合があります。謝罪します。それは私のせいではありません。

  1. ソリューション エクスプローラーでプロジェクトを右クリックします。
  2. ドロップダウン メニューの下部にある [プロパティ] をクリックします。
  3. [プロパティ ページ] の左上にあるドロップダウン メニューから [すべての構成] を選択します。
  4. C/C++ ツリーを開き、プリコンパイル済みヘッダーを選択します。
  5. プリコンパイル済みヘッダー: 使用を選択 (/Yu)
  6. [プリコンパイル済みヘッダー ファイル] フィールドに入力します。標準は stdafx.h
  7. [OK] をクリックします

  8. ヘッダー ファイルに stdafx.h がない場合は、そこに置きます。プリコンパイルするすべてのヘッダーを #include するように編集します。

  9. stdafx.cpp という名前のファイルをプロジェクトに入れます。その先頭に #include "stdafx.h" を置き、他には何も置きません。
  10. ソリューション エクスプローラーで stdafx.cpp を右クリックします。手順 4 のように [プロパティ] と [すべての構成] をもう一度選択します ...
  11. ...しかし、今回はプリコンパイル済みヘッダーの作成 (/Yc) を選択します。これは、1 つのファイル stdafx.cpp にのみバインドされます。
  12. #include "stdafx.h" をすべてのソース ファイルの一番上に置きます。

ラッキー 13. 指を交差させて Build を押します。

于 2012-09-07T21:49:39.933 に答える
61

プリコンパイル済みヘッダー(pch)の使用は、2段階のプロセスです。

ステップ1では、スタブファイルをコンパイルします(VS200xでは通常呼ばれstdafx.cppます。新しいバージョンでは。を使用しpch.cppます)。このスタブファイルには、プリコンパイルするヘッダーのみが間接的に含まれています。通常、1つの小さなヘッダー(通常stdafx.hまたは)には、やpch.hppなどの標準ヘッダーがリストされ、これがスタブファイルに含まれます。これをコンパイルすると、.pchファイルが作成されます。<iostream><string>

ステップ2では、実際のソースコードに、ステップ1の最初のヘッダーと同じ小さなヘッダーが含まれています。コンパイラは、この特別なヘッダーを検出すると、代わりに対応する.pchファイルを読み取ります。つまり、これらの標準ヘッダーを毎回(再)コンパイルする必要はありません。

あなたの場合、ステップ1は失敗したようです。スタブファイルはまだ存在していますか?あなたの場合、それはおそらくですxxxxx.cpp/Yc:xxxxx.pchこれは、PCHプロセスのステップ1であることを示すコンパイラフラグであるため、でコンパイルされたファイルである必要があります。が存在し、そのようなスタブファイルである場合は、コンパイラオプションxxxxx.cppが欠落している可能性があります。/Yc:

于 2011-05-23T11:47:11.403 に答える
25

修理:

  1. プロジェクトに xxxxx.cpp があることを確認してください

  2. /Yc フラグを指定してxxxxx.cppをコンパイルします (プリコンパイル済みヘッダーの作成
    ) (xxxxx.cpp を右クリック -> プロパティ -> プリコンパイル済みヘッダー ->作成)

  3. /Yu フラグを使用して他のすべてのファイルをコンパイルします (プリコンパイル済みヘッダーを使用
    ) (プロジェクトを右クリック -> プロパティ -> プリコンパイル済みヘッダー ->使用)

于 2012-11-20T18:55:22.830 に答える
8
  1. プロジェクトを右クリックして、プロパティ メニュー項目を選択します。
  2. C/C++ に移動 -> プリコンパイル済みヘッダー
  3. プリコンパイル済みヘッダーを使用しないを選択
于 2012-08-08T11:54:40.233 に答える
2

はい、他の人が指摘したように /Yc オプションで排除できますが、修正するために触れる必要はないでしょう。設定を何も変更せずに最初にこのエラーが発生するのはなぜですか? プロジェクトを「クリーン」にして、単一の cpp ファイルをコンパイルしようとする可能性があります。この場合、プリコンパイラ ヘッダーが欠落しているため、このエラーが発生します。プロジェクト全体をビルドするだけで (失敗した場合でも)、単一の cpp ファイルをビルドすると、このエラーは発生しません。

于 2013-11-21T16:37:21.540 に答える
1

Build > Clean Solution を試してから、Build > Build Solution を試してください。 これは私にとってはうまくいきます。

于 2014-03-05T04:47:13.123 に答える
1

このトピックは非常に古いことは知っていますが、最近VS2015でこれに対処していましたが、ビルドフォルダーを削除して再ビルドすることが役に立ちました。これは、プログラムを閉じようとしたか、ビルド中にプログラムが VS を停止/フリーズしたために発生した可能性があります。

于 2016-12-25T23:16:50.113 に答える
0

すべてが正しいが、この間違いが存在する場合は、****.vcxproj ファイルの次のセクションを確認する必要があります。

<ClCompile Include="stdafx.cpp">
  <PrecompiledHeader Condition=

私の場合、構成の名前が正しくありませんでした。最初の単語のみです。

于 2016-10-30T16:14:50.737 に答える