致命的なエラー C1083

Filetype ファイルを開くことができません: 'file': message

必要なファイルが見つからない場合、コンパイラは C1083 エラーを生成します。 このエラーには多くの原因が考えられます。 不適切なインクルード検索パス、または missing または misnamed ヘッダーファイルは、最も一般的な原因ですが、他のファイルの種類や問題によって C1083 が発生する場合もあります。 コンパイラがこのエラーを生成する一般的な理由のいくつかを次に示します。

指定されたファイル名が正しくない

ファイルの名前が間違っている可能性があります。 たとえば、オブジェクトに適用された

#include <algorithm.h>

この場合、目的のファイルが見つからないことがあります。 ほとんどの C++ 標準ライブラリのヘッダーファイルには、.h ファイル名拡張子が付いていません。 ヘッダーは、 <algorithm> このディレクティブでは見つかりません #include 。 この問題を解決するには、次の例のように、正しいファイル名が入力されていることを確認します。

#include <algorithm>

一部の C ランタイム ライブラリのヘッダーは、標準のインクルード ディレクトリのサブディレクトリにあります。 たとえば、を含めるには、 sys/types.h sys ディレクティブにサブディレクトリ名を含める必要があり #include ます。

#include <sys/types.h>

インクルードの検索パスにファイルが含まれていません

コンパイラが、#include ディレクティブまたは #import ディレクティブで指定された検索ルールを使用して、ファイルを見つけられません。 たとえば、ヘッダーファイル名が引用符で囲まれている場合、

#include "myincludefile.h"

これにより、最初にソースファイルが格納されているディレクトリ内のファイルを検索し、ビルド環境で指定された他の場所を検索するようにコンパイラに指示します。 絶対パスが二重引用符で囲まれている場合、コンパイラはその場所だけでファイルを検索します。 二重引用符で囲まれているのが相対パスの場合は、ソース ディレクトリに対して相対的なディレクトリでファイルを検索します。

名前が山かっこで囲まれている場合、

#include <stdio.h>

コンパイラは、ビルド環境、 /I コンパイラオプション、 /X コンパイラオプション、および INCLUDE 環境変数によって定義された検索パスに従います。 ファイルの検索順序に関する詳細など、詳細については、「 #include ディレクティブ (C/c + +) 」および「 #import ディレクティブ」を参照してください。

インクルードファイルがソースディレクトリに関連する別のディレクトリにあり、include ディレクティブで相対パスを使用する場合は、山かっこではなく二重引用符を使用する必要があります。 たとえば、ヘッダーファイル myheader.h がヘッダーという名前のプロジェクトソースのサブディレクトリにある場合、この例では、ファイルを見つけることができず、C1083 が発生します。

#include <headers\myheader.h>

しかし、この例は次のように機能します。

#include "headers\myheader.h"

相対パスは、インクルード検索パスのディレクトリと共に使用することもできます。 include 環境変数にディレクトリを追加する場合、または Visual Studio の インクルードディレクトリ パスにディレクトリを追加する場合は、include ディレクティブにパスの一部を追加しないでください。 たとえば、ヘッダーがに配置されていて、 \path\example\headers\myheader.h \path\example\headers\ Visual Studio の インクルードディレクトリ パスにを追加したものの、ディレクティブが次の #include ようにファイルを参照している場合などです。

#include <headers\myheader.h>

その後、ファイルが見つかりません。 インクルードの検索パスに指定されているディレクトリに対して、正しいパスを使用します。 この例では、インクルード検索パスをに変更する \path\example\ か、 headers\ ディレクティブからパスセグメントを削除でき #include ます。

サードパーティ製ライブラリの問題と vcpkg

ビルドの一部としてサードパーティのライブラリを構成しようとしているときにこのエラーが表示される場合は、C++ パッケージマネージャーのvcpkgを使用してライブラリをインストールし、ビルドすることを検討してください。 vcpkg は、サードパーティのライブラリの大規模で拡張されたリストをサポートし、プロジェクトの一部として成功したビルドに必要なすべての構成プロパティと依存関係を設定します。

ファイルはプロジェクト内にありますが、インクルード検索パスではありません

ヘッダーファイルがプロジェクトの一部として ソリューションエクスプローラー に一覧表示されている場合でも、ファイルは、ソースファイル内のディレクティブまたはディレクティブによって参照されている場合にのみ、コンパイラによって検出され、 #include #import インクルード検索パスに配置されます。 ビルドの種類が異なると、使用する検索パスも異なることがあります。 コンパイラオプションを使用すると、 /X インクルード検索パスからディレクトリを除外できます。 このため、別々のビルドにおいて、名前は同じでも別々のディレクトリに置かれている別々のインクルード ファイルを使用することができます。 これは、プリプロセッサ コマンドを使用する条件付きコンパイルに代わる方法です。 コンパイラオプションの詳細については /X 、「 /X (標準インクルードパスを無視する)」を参照してください。

この問題を解決するには、インクルード ファイルまたはインポートされたファイルを検索するときにコンパイラが使用するパスを修正します。 新しいプロジェクトでは、既定のインクルード検索パスを使用します。 場合によっては、インクルード検索パスを変更して、プロジェクトのディレクトリを追加する必要があります。 コマンドラインでコンパイルする場合は、 INCLUDE 環境変数またはコンパイラオプションのパスを追加して、 /I ファイルへのパスを指定します。

Visual Studio にインクルードディレクトリパスを設定するには、プロジェクトの [プロパティページ] ダイアログボックスを開きます。 左側のウィンドウの [構成プロパティ] で [ VC++ ディレクトリ] を選択し、[インクルードディレクトリ] プロパティを編集します。 Visual Studio でコンパイラによって検索されるユーザーごとのディレクトリおよびプロジェクトごとのディレクトリの詳細については、「 VC++ のディレクトリ」プロパティページを参照してください。 コンパイラオプションの詳細については /I 、「 /I (追加のインクルードディレクトリ)」を参照してください。

コマンドラインのインクルードまたは LIB 環境が設定されていません

コマンド ラインでコンパイラを実行するときに、環境変数を使用して、検索パスを指定することはよくあります。 INCLUDE または LIB 環境変数によって記述された検索パスが正しく設定されていない場合は、C1083 エラーが生成されることがあります。 コマンドラインビルドの基本環境を設定するには、開発者コマンドプロンプトのショートカットを使用することを強くお勧めします。 詳細については、 コマンドラインでの c/c + + のビルドに関する説明を参照してください。 環境変数の使用方法の詳細については、「 方法: ビルドで環境変数を使用する」を参照してください。

ファイルがロックされているか、使用中の可能性があります

別のプログラムを使用してファイルの編集またはアクセスを行っている場合は、ファイルがロックされている可能性があります。 他のプログラムのファイルを閉じてみてください。 並列コンパイルオプションを使用している場合は、他のプログラムを Visual Studio することがあります。 [並列ビルド] オプションをオフにすると、エラーが発生しなくなります。 他の並列ビルドシステムでもこの問題が発生する可能性があります。 ビルドの順序が正しいように、ファイルとプロジェクトの依存関係を設定するように注意してください。 場合によっては、複数のプロジェクトによってビルドされる共通ファイルのビルド依存関係の順序を強制する中間プロジェクトを作成することを検討してください。 ウイルス対策プログラムは、最近変更されたファイルをスキャン用に一時的にロックすることがあります。 可能であれば、ウイルス対策スキャナーからプロジェクトのビルドディレクトリを除外することを検討してください。

ファイル名のバージョンが間違っている

C1083 エラーは、誤ったバージョンのファイルがインクルードされたことを示している場合もあります。 たとえば、ビルドに含まれているファイルのバージョンが誤っていて、そのビルド向けではないヘッダー ファイルをインクルードする #include ディレクティブが指定されていることがあります。 たとえば、特定のファイルは x86 ビルドにのみ適用される場合もあれば、デバッグビルドにのみ適用される場合もあります。 そのヘッダー ファイルを見つけられない場合、コンパイラは C1083 エラーを生成します。 この問題の解決方法は、正しいファイルを使用することで、ヘッダー ファイルやディレクトリをビルドに追加することではありません。

プリコンパイル済みヘッダーがプリコンパイルされていない

プリコンパイル済みヘッダーを使用するようにプロジェクトが構成されている場合は、 .pch ヘッダーの内容を使用するファイルをコンパイルできるように、関連するファイルを作成する必要があります。 たとえば、 pch.cpp ファイル ( stdafx.cpp Visual Studio 2017 以前) は、新しいプロジェクトのプロジェクトディレクトリに自動的に作成されます。 そのファイルを最初にコンパイルして、プリコンパイル済みヘッダー ファイルを作成してください。 通常のビルドプロセス設計では、これは自動的に行われます。 詳細については、「 プリコンパイル済みヘッダーファイルの作成」を参照してください。

その他の理由

  • SDK またはサードパーティのライブラリがインストールされていますが、SDK またはライブラリがインストールされた後に、新しい [開発者コマンドプロンプト] ウィンドウが開かれていません。 SDK またはライブラリによって インクルード パスにファイルが追加される場合、これらの環境変数の変更を選択するには、新しい開発者コマンドプロンプトウィンドウを開く必要がある場合があります。

  • ファイルはマネージコードを使用していますが、コンパイラオプションが指定されて /clr いません。 詳細については、「 /clr (共通言語ランタイムのコンパイル)」を参照してください。

  • ファイルは、 /analyze ヘッダーのプリコンパイルに使用されるものとは異なるコンパイラオプション設定を使用してコンパイルされます。 プロジェクトのヘッダーがプリコンパイルされている場合は、すべてが同じ設定を使用する必要があり /analyze ます。 詳細については、「」 /analyze (Code Analysis)を参照してください。

  • ファイルまたはディレクトリが Linux 用 Windows サブシステムによって作成されました。ディレクトリごとの大文字小文字の区別が有効になっています。また、指定したパスまたはファイルの大文字と小文字は、ディスク上のパスまたはファイルの大文字と小文字が一致しません。

  • ファイル、ディレクトリ、またはディスクが読み取り専用です。

  • Visual Studio またはコマンドラインツールに、ファイルまたはディレクトリを読み取るための十分なアクセス許可がありません。 これは、たとえば、プロジェクトファイルが Visual Studio 実行されているプロセスとは異なる所有権を持っている場合、またはコマンドラインツールである場合に発生する可能性があります。 場合によっては、Visual Studio または開発者コマンドプロンプトを管理者として実行することで、この問題を解決できます。

  • ファイル ハンドルが足りません。 いくつかのアプリケーションを閉じてから、再コンパイルしてください。 この状況は、通常であればめったに発生しません。 ただし、物理メモリが限定されているコンピューターで大規模なプロジェクトをビルドすると発生することがあります。

次の例では、ヘッダーファイルが "test.h" ソースディレクトリまたはインクルード検索パスに存在しない場合に、C1083 エラーが生成されます。

// C1083.cpp
// compile with: /c
#include "test.h"   // C1083 test.h does not exist
#include "stdio.h"  // OK

IDE またはコマンドラインで C/c + + プロジェクトをビルドする方法、および環境変数の設定の詳細については、「 プロジェクトとビルドシステム」を参照してください。

関連項目