web-dev-qa-db-ja.com

「インクルードファイルを開けません: 'atlbase.h':No such file or directory」エラー

私は(2台のWindows 8.1ラップトップ間で)マシンを交換し、TFSから作業中のプロジェクトをロードしました。あるマシンではコンパイルし、別のマシンではコンパイルせず、最初のエラーを出します

_error C1083: Cannot open include file: 'atlbase.h': No such file or directory
_

両方のラップトップでVisual Studio Ultimate 2013を実行しています。最初のラップトップで_atlbase.h_を取得している場所を確認しました。これはC:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\includeから、つまりVisual Studio 2012のインストールディレクトリから取得しています。 。新しいマシンにはVisual Studio 2012がインストールされていないため、ディレクトリC:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\includeは存在しません。

他の人々はVisual Studio Expressを使用しているため、同様の問題があります(例 Ramilolの質問 )。私はUltimateを使用しています。

環境変数の問題である可能性があります(- raj rajによって提案 )。ただし、_VC++ Directories_の下のインクルードディレクトリパスは、必要に応じて$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath)です。

私の一般的な質問は「これをどのように修正するのですか?」です。 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\includeには_atlbase.h_が含まれているので、$(VCInstallDir)の値を確認および設定する方法にも興味があります(そのため、なぜそれが取得されないのかについて混乱しています)。

==========編集1:言い換える==========

この質問の言い回しをもう一度見てみましょう。

TFSから新しいビルドのラップトップにVisual Studio 2013プロジェクトをロードしました。ビルドされず、_error C1083: Cannot open include file: 'atlbase.h': No such file or directory_のようなエラーが発生します。ファイル_atlbase.h_は、新しいマシンのディレクトリC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\includeにあります。

私のプロジェクトのプロパティでは、_VC++ Directories_の下のインクルードディレクトリパスは$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath)です

それらのマクロが設定されているものを確認するにはどうすればよいですか、それらが_atlbase.h_の場所にない場合(つまりC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include)は、どのように修正すればよいですか?

========== EDIT 2:Microsoft Visual C++ Redistributables installed ==========

jp2codeの回答 に応答すると、次のスクリーンショットに示すように、動作するマシンと、Microsoft Visual C++ Redistributablesの同様の配列がインストールされていないマシン(左側の動作するマシン)が表示されます。

MSVC++RedistScreenshot

==========編集3:環境変数==========

his answer、pje では、環境変数の検索方法について説明しています。 _%VCInstallDir%_はC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\に正しく設定されていますが、_#include <atlbase.h>_の行を右クリックすると、このエラーが表示され、_%VCInstallDir%_が正しいにもかかわらず、VSではありません。探しています:

open file error screenshot

==========編集4:プラットフォームツールキットの設定==========

別の可能性は、コメントでmanuellによって提案された_Configuration Properties | General | Platform Toolset_プロジェクト設定と Michael Burrの回答 です。プロジェクトではVisual Studio 2012 (v110)に設定するように設定されていますが、ドロップダウンにリストされている他のオプションは_v110_wp80_のみで、選択するとWindows Phone 8.0 (v110)になります。メモ帳で.vcxprojファイルを手動で編集し、Visual Studio Ultimate 2013でプロジェクトを再度開くと、プロパティページにプラットフォームツールセットがVisual Studio 2013 (v120) (not installed)として表示されます。

新しいC++ Windowsストアプロジェクトを開始する場合、プラットフォームツールセットをVisual Studio 2013 (v120)に問題なく設定できます。実際、これはドロップダウンにリストされている唯一のオプションです。 (N.B.新しいプロジェクトでは_Target Platform Version_が 'Windows 8.1'に設定されており、グレー表示されているため変更できませんが、失敗したプロジェクトではWindows 8に設定されています。)

==========編集5:プロジェクト設定ファイル全体==========

コメントで Michael は、「おそらく.vcxprojを(githubのGistのように)どこかに投稿すると役立つかもしれない」と示唆しています。私はそれを掲載しました ここ

========== EDIT 6:Visual Studio 2013 Ultimateのアンインストールと再インストール==========

効果はありません。同じエラーが繰り返し発生します。

21
dumbledad

新しいマシンにVisual Studio 2012がインストールされていません

まあ、もう探す必要はありません、それはあなたの問題です。プロジェクトは、VS2012ツールセットを対象として、Windows 8.0で実行されるStoreプロジェクトを構築します。 VS2013でも開くことができますが、VS2012がインストールされている場合にのみビルドできます。つまり、マシンで使用可能なv110ツールセットが必要です。あなたはしません。

VS2012のインストールからすぐに、VS2013ツールセット(v120)でビルドできるように、8.1に再ターゲットする必要があります。 [ソリューションエクスプローラー]ウィンドウでソリューションノードを右クリックし、[WindowsストアプロジェクトをWindows 8.1にターゲット変更]を選択します。

そのラップトップについて少し心配してください、それはVS2012についてあまり覚えています。一度インストールしたように聞こえますが、正しくアンインストールされていません。

9
Hans Passant

「構成プロパティ|一般|プラットフォームツールセット」プロジェクト設定が次のようになっていることを確認します。

Visual Studio 2013 (v12)

「Visual Studio 2012(v110)」のようなものではありません

5
Michael Burr

$(VCInstallDir)またはその他のVisual Studioマクロの値を確認する場合は、VS2013の開発者コマンドプロンプトを開きます(これはVS 2013インストールでインストールされているはずです)。プロンプトで、_echo %VCInstallDir%_と入力します。これにより、$(VCInstallDir)マクロの現在の値が出力されます。これを別のディレクトリに変更する場合は、_set VCInstallDir=<directory path>_と入力します。ここで、_<directory path>_は目的のディレクトリへのパスです(おそらくC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include)。

よろしくお願いいたします。

------編集-------
補足として、これらのマクロは、2013でロードおよびコンパイルしようとした2012プロジェクトでインポートされた可能性があります。$(VCInstallDir)マクロが間違っていたことが判明した場合は、それが理由を説明するでしょう。

5
pje

可能な解決策

  1. Get Process Monitor
  2. atlbase.hのフィルター

これにより、Visual Studioがatlbase.hを探している場所を正確に知ることができます。プロセスモニターは、失敗したファイルを開く試行を示します。

この時点で、次の方法で問題を解決できます。

  1. シンボリックリンクを作成(乱雑)
  2. インクルードディレクトリパスを修正(より良い)

Update次に、ファイル操作をフィルタリングする方法を示します。

filter settings

フィルタパラメータを設定した後、Addをクリックすることを忘れないでください。

4
George

両方のマシンに同じバージョンのC++再頒布可能パッケージがインストールされていることを確認します。

試してみる価値があり、簡単に確認できます。

screenshot

3
jp2code