web-dev-qa-db-ja.com

ビルドで見つからない.pchファイルを修正するには?

Visual StudioでC++ソリューションをビルドすると、xxxxx.pchファイルが欠落しているという苦情があります。プリコンパイル済みヘッダーを元に戻すための設定がありませんか?

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

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

注: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. ...ただし、今回はプリコンパイル済みヘッダーを選択しますCreate(/Yc).これは、1つのファイルstdafx.cppにのみバインドします。
  12. すべてのソースファイルの最上部に#include "stdafx.h"を配置します。

ラッキー13.指をクロスして、ビルドを押します。

376
Jive Dadson

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

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

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

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

57
MSalters

修正:

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

  2. コンパイルxxxxx.cpp/Ycフラグ付き(Createプリコンパイル済みヘッダー)
    (xxxxx.cppを右クリック->プロパティ->プリコンパイル済みヘッダー-> 作成

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

20
franckspike
  1. プロジェクトを右クリックして、プロパティメニュー項目を選択します
  2. goto C/C++->プリコンパイル済みヘッダー
  3. プリコンパイル済みヘッダーを使用しないを選択します
7
jpabess

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

2
zar

サーバービルド(AppCenter)でこれが発生した場合、CocoaPodsを使用してPodfileがチェックインされていることを確認してください。

AppCenterは、Pofileを検出し、ファイル上のPODSフォルダーを検出しない場合にのみ、「pod install」コマンドを実行します。

フォルダーをチェックインしましたが、gitは.pchファイルを自動的に無視するため(これを確認するには.gitignoreをチェックしてください)、. pchはチェックインされませんでした。

.pchファイルを強制的にチェックして問題をソートしましたが、その場合はAppcenterがpod installコマンドを実行するため、PODSフォルダーの削除も機能するはずです。

うまくいけば、これは誰かを助ける。

2
Marco Leite

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

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

私の場合、構成の名前が間違っていました。最初のWordのみです。

0

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

0
glover12

私も同じ問題を抱えているiOS PCHファイルを探していました。あなたも私のようにここに来たなら、私が見つけた解決策は派生データをクリアすることです。シミュレータを閉じ、xCodeの設定に移動->場所->派生データファイルのパスに移動し、xCodeを閉じ、派生データフォルダ内のファイルを削除し、再起動して歓声を上げます:)

0
Ahmed Awad