Visual StudioはC ++ヘッダーファイルをどこで探しますか?


94

SourceForge(興味があればHoboCopy)からC ++アプリケーションのコピーをチェックアウトして、コンパイルしようとしました。

Visual Studioから、特定のヘッダーファイルが見つからないことがわかりました。ソースツリーでファイルを見つけましたが、コンパイル時に見つかるように、どこに置く必要がありますか?

特別なディレクトリはありますか?

回答:


113

Visual Studioは、次の順序でヘッダーを探します。

  • 現在のソースディレクトリ。
  • 追加では、プロジェクトのプロパティでディレクトリのインクルード(プロジェクト - > [プロジェクト名]のプロパティ、C / C ++の下で|一般)。
  • Visual Studio C ++ インクルードディレクトリの[ ツール] →[ オプション] →[ プロジェクトとソリューション] →[ VC ++ディレクトリ]
  • Visual Studio(2015+)の新しいバージョンでは、上記のオプションは廃止され、デフォルトのインクルードディレクトリのリストは、プロジェクトのプロパティ構成VC ++ディレクトリにあります。

あなたのケースでは、ヘッダーがあるディレクトリをプロジェクトのプロパティに追加します(プロジェクトのプロパティ構成C / C ++一般追加のインクルードディレクトリ)。


3
いい答えですが、Visual Studio 2003では「ツール|オプション|プロジェクトとソリューション| VC ++ディレクトリ」ではなく、「ツール|オプション| VC ++ディレクトリ」を参照する必要があることを付け加えておきます。
Graf、

36
VS 2010のプリプロセッサは、引用されたインクルード構文が使用されている場合にのみ現在のディレクトリを調べます(例:#include "whatever.h")。アングルブラケットを使用して(例えばする#include <whatever.h>)省略現在のディレクトリ(msdn.microsoft.com/en-us/library/36k2cdd4(v=VS.100).aspx
デニスMünkle

5
Visual Studio 2010以降では、「標準C ++のディレクトリは」ツール- >オプションの下にはなくなりましたし、グローバルプロパティ・シートである:blogs.msdn.com/b/vsproject/archive/2009/07/07/...
Mooingダック

8
誰もまだデフォルトのディレクトリだけを言ったのではないでしょうか。だから、ここにあり<root dir of Visual Studio>/VC/include/ます。以前のユーザーの仕事用PCにMSVCがありますが、GNU / Linuxを使用していて、Microsoft®のヘッダーを見るという好奇心を満たすためだけにVCを起動したくありません。ところで、私がどんな種類の好奇心を持っていたかについて:私は、MSDNがそれ自体のヘッダー名さえ知らないことを発見しました!つまり、彼らはを参照しましたがIphlpapi.h、そのようなファイルは存在しません。名前はどちらiphlpapi.hかですIPHlpApi.h(両方あります)。lol
Hi-Angel 14

17
オプション「VS>ツール>オプション>プロジェクトとソリューション> VC ++ディレクトリ」は廃止されました。
BG BRUNO 2015年

21

実際、Visual Studio 2017コミュニティを搭載したWindows 10では、C ++ヘッダーパスは次のとおりです。

  1. C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include

  2. C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt

1番目には<iostream>、などの標準C ++ヘッダーが含まれてい<algorithm>ます。2番目には<stdio.h>、などの古いCヘッダーが含まれています<string.h>。バージョン番号は、ソフトウェアによって異なる場合があります。

これがお役に立てば幸いです。


1
これがOPに対する最も直接的な答えです。他の答えは他の問題について話しますが、これは受け入れられる答えでなければなりません。
winux 2019

@linrongbin最新のVSビルドツールのインストールによって作成されたディレクトリを清掃しています。あなたは最初について正しいです。しかし、私は効果的に私が順番にビルドツールでC ++ワークフローはC.をサポートしていないことを意味する、Cヘッダを持っていないことを意味しそうという、Windows SDKのオプションをオフに
Hatebit

11

プロジェクトにVisual Studioプロジェクトファイルが付属している場合は、ヘッダーを検索するように既に構成されているはずです。そうでない場合は、プロジェクトを右クリックして[プロパティ]を選択し、[C / C ++]をクリックして、インクルードファイルを含むディレクトリを[追加のインクルードディレクトリ]に追加する必要があります。編集ボックス。


6

これをRob Prouseの投稿へのコメントとして追加しようとしましたが、フォーマットが不足しているため、わかりにくくなっています。

Visual Studio 2010では、[ツール|オプション|プロジェクトとソリューション| VC ++ディレクトリ]ダイアログに、[ツール>オプションでのVC ++ディレクトリの編集は非推奨になりました]と表示され、直感に反するプロパティマネージャーを使用することが提案されます。

本当に、本当にデフォルトの$(IncludePath)を更新したい場合は、XMLファイルの1つにある適切なエントリをハックする必要があります。

\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ Win32 \ PlatformToolsets \ v100 \ Microsoft.Cpp.Win32.v100.props

または

\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ x64 \ PlatformToolsets \ v100 \ Microsoft.Cpp.X64.v100.props

(おそらくマイクロソフト推奨ではありません。)


6

Visual Studio 2015コミュニティにバグがあるようです。64ビットプロジェクトの場合、win32ビット構成の追加のインクルードフォルダーリストにない限り、インクルードフォルダーは見つかりません。


3
このバグへのリンクまたはそれへの参照をお持ちですか?
Preet Sangha

いいえ、自分で見つけて報告しませんでした
マーカス

5

Visual Studioでインクルードパスはどのように機能しますか?

新しいバージョンのVisualStudioでそれを行う方法が明らかになった

  • 現在のプロジェクトでのみ(質問もここで設定されているため)、同様に
  • 新しいプロジェクトごとにデフォルトで

2つ目は、上記のスティーブウィルキンソンの答えが説明していることであり、彼が自分で想定しているように、マイクロソフトが推奨するものではありません。

ここで簡単に言うと、そうしますが、次のユーザーディレクトリで行います。

C:\ Users \ UserName \ AppData \ Local \ Microsoft \ MSBuild \ v4.0

XMLファイル内

Microsoft.Cpp.Win32.user.props

および/または

Microsoft.Cpp.x64.user.props

C:\ program files-ディレクトリではなく、変更されていないMicrosoftのFactory-Fileが存在すると予想されるディレクトリ。

次に、VisualStudioが行うように、すべてを定期的に実行します。

詳細情報については、なぜ、同様にそれを行うには私の答えを参照してください


1
タイトルに「C ++」が含まれ、32ビットパスセクションで64ビットパスを探すバグを確認した場合
Markus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.