3

C++ でコンパイルするときにこのエラーが発生する人はいますか?

Fatal Error C1382: the PCH file 'file' has been rebuilt since 'obj' was generated. Please rebuild this object

私は解決策をグーグルで検索し、msdn は次の 2 つのことを行う必要があると提案しました。

  1. /LTCG を使用している場合、コンパイラは、それを指す CIL .obj よりも新しい .pch ファイルを検出しました。CIL .obj ファイルの情報が古くなっています。オブジェクトを再構築します。

  2. C1382 は、/Yc を使用してコンパイルした場合にも発生する可能性がありますが、複数のソース コード ファイルをコンパイラに渡すこともできます。解決するには、複数のソース コード ファイルをコンパイラに渡すときに /Yc を使用しないでください。

オプション 1 を実行しましたが、コンパイラが自動的にオンにします。

オプション 2 の場合、複数のソース コード ファイルをコンパイラに渡しているかどうかはどうすればわかりますか?

仕事用アプリケーションの他のすべてのプロジェクトで /Yc オプションがオンになっているため、/Yc オプションをオフにできません...この問題が発生するのは私のプロジェクトだけです。

誰もがより良い解決策を知っていますか?

ありがとう!

4

3 に答える 3

2

ソリューション全体を再構築するだけです。

于 2012-12-14T18:07:41.020 に答える
0

VS2005 には既知のバグがあります (残念ながら参照できるものはありません)。これを修正するには、vcproj ファイル内の他の cpp ファイルの上に stdafx.cpp を配置する必要があります。このバグは VS2008 以降で修正されています。

たとえば、vcproj では次のようになります。

<Files>
  <Filter Name="Source Files" ...>
    <File RelativePath=".\file1.cpp"> .. </File>
    <File RelativePath=".\file2.cpp"> .. </File>
    <File RelativePath=".\stdafx.cpp"> .. </File>
...
</Filter>    
...
</Files>

あなたはそれを作るべきです:

<Files>
  <Filter Name="Source Files" ...>
    <File RelativePath=".\stdafx.cpp"> .. </File>
    <File RelativePath=".\file1.cpp"> .. </File>
    <File RelativePath=".\file2.cpp"> .. </File>
...
</Filter>    
...
</Files>

PS

これは時々発生するフローティングの問題です。

于 2013-04-08T12:53:39.290 に答える
0

QT Moc を使用してビルド前のステップで moc ファイルを作成し、/fi コマンド引数を介して含まれていた stdafx.h の内容を変更すると、VS2008 Win32 コンパイラが変更されないことがわかりました。このエラーは発生しませんが、VS2008 ARMv4i コンパイラでは発生しました。

ビルド前のステップ ルールに stdafx.h への依存関係を追加することもできますが、stdafx.h に含まれるものが変更された場合、これは解決されませんでした。

于 2014-11-26T21:48:01.950 に答える