Visual C++ 2008 コンパイラを使用する場合のエラー メッセージ: "致命的なエラー C1859"

現象

Microsoft Visual C++ 2008 コンパイラを実行してファイルをコンパイルしたり、プロジェクトをビルドしたりすると、次のエラー メッセージが表示されます。

致命的なエラー C1859: ヘッダー ファイル名 が予期しないプリコンパイル済みヘッダーです。コンパイラを再実行するだけで、この問題が解決される可能性があります。

さらに、この問題は、コンパイラを再実行しても引き続き発生します。 この問題は、Windows 7 または Windows Server 2008 を実行しているコンピューターで [プリコンパイル済みヘッダー コンパイラの作成/使用] オプションを有効にした場合に発生します。

注/ analyze コンパイラ オプションを有効にすると、この問題が頻繁に発生する可能性があります。

原因

[プリコンパイル済みヘッダーの作成/使用] コンパイラ オプションを有効にすると、コンパイラでは、プリコンパイルされたヘッダー ファイルと相対モジュールがコンパイル間で移動しないようにする必要があります。 ただし、アドレス空間レイアウトのランダム化 (ASLR とも呼ばれます) 機能は、プロセス内のモジュールをランダムに再配置します。 したがって、モジュールがコンパイル間を移動すると、エラーが発生します。

解決策

修正プログラムの情報

マイクロソフトでは、この問題を修正する修正プログラムを提供しています。 ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。 この修正プログラムは、ここで説明する問題が発生しているシステムにのみ適用してください。 この修正プログラムは、今後さらにテストを行う場合があります。 したがって、この問題で深刻な影響を受けていない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことを推奨します。

Microsoft Developer Network (MSDN) コード ギャラリーからこの修正プログラムをダウンロードするには、次の Microsoft Web サイトを参照してください。

http://code.msdn.microsoft.com/KB976656
注 MSDN コード ギャラリーには、修正プログラムが利用可能な言語が表示されます。 言語が一覧に表示されない場合は、コード ギャラリー リソース ページがその言語で使用できないためです。

注: 別の問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストを作成することが必要になる場合があります。 特定の修正プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。 Microsoft カスタマー サービス & サポート の電話番号一覧または別のサービス リクエストの作成については、次のマイクロソフト Web サイトを参照してください。

http://support.microsoft.com/contactus/?ws=support 注 この修正プログラムは、次の Microsoft Web サイトからダウンロードすることもできます。

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=25785 注 この修正プログラム パッケージには、"C1001: .NET Framework 3.5 を使用している場合、コンパイラ (コンパイラ ファイル f:\dd\vctools\compiler\utc\src\p2\main.c、182 行目) で内部エラーが発生しました。

前提条件

この修正プログラムを適用するには、Microsoft Visual Studio 2008 Service Pack 1 がインストールされている必要があります。

再起動の必要性

Visual Studio のインスタンスが使用されていない場合は、修正プログラムを適用した後にコンピューターを再起動する必要はありません。

修正プログラムの置き換えに関する情報

この修正プログラムは、他の修正プログラムを置き換えるものではありません。

ファイル情報

  この修正プログラムの英語版には、次の表に示すファイル属性 (またはそれ以降のファイル属性) があります。 これらのファイルの日付と時刻は世界協定時 (UTC) で記載されています。 ファイル情報に表示される時刻は、ローカル時刻に変換されています。 UTC と現地時刻の違いを見つけるには、
タイム ゾーン
  タブをクリックします。
日付と時刻
  コントロール パネル内の項目。

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻
C1.dll 15.0.30729.4455 677,184 2009 年 12 月 10 日 02:31
C1.dll 15.0.30729.4455 828,744 2009 年 12 月 10 日 02:31
C1xx.dll 15.0.30729.4455 2,202,952 2009 年 12 月 10 日 02:31
C1xx.dll 15.0.30729.4455 2,213,704 2009 年 12 月 10 日 02:31
C1xx.dll 15.0.30729.4455 2,348,360 2009 年 12 月 10 日 02:31
C1xx.dll 15.0.30729.4455 2,504,016 2009 年 12 月 10 日 02:31
C1xx.dll 15.0.30729.4455 2,890,568 2009 年 12 月 10 日 02:31

回避策

この問題を回避するには、以下のいずれかの方法を使用します。

方法 1

有効になっている場合は、/analyze コンパイラ オプションを無効にします。

方法 2

 クリーン ビルドを開始します。

方法 3

コンピューターを再起動します。

方法 4

[プリコンパイル済みヘッダーの作成/使用] コンパイラ オプションを無効にします。

注 これらのメソッドは動作することが保証されていません。 これらの方法のいずれかを使用しても、この問題が発生する可能性があります。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

追加情報

アドレス空間レイアウトのランダム化の詳細については、次の Microsoft ブログ投稿を参照してください。

Windows Vista でのアドレス空間レイアウトのランダム化 プリコンパイル済みヘッダー エラーの詳細については、次の Microsoft ブログ投稿を参照してください。

Windows 7 のプリコンパイル済みヘッダー エラー