Di mana Visual Studio mencari file header C ++?


95

Saya memeriksa salinan aplikasi C ++ dari SourceForge (HoboCopy, jika Anda penasaran) dan mencoba mengkompilasinya.

Visual Studio memberi tahu saya bahwa ia tidak dapat menemukan file header tertentu. Saya menemukan file tersebut di pohon sumber, tetapi di mana saya harus meletakkannya, sehingga akan ditemukan saat kompilasi?

Apakah ada direktori khusus?

Jawaban:


118

Visual Studio mencari header dalam urutan ini:

  • Di direktori sumber saat ini.
  • Dalam Direktori Sertakan Tambahan di properti proyek ( Proyek -> [nama proyek] Properti , di bawah C / C ++ | Umum).
  • Dalam Visual Studio C ++ Sertakan direktori di bawah ToolsOptionsProjects and SolutionsVC ++ Directories .
  • Dalam versi baru Visual Studio (2015+), opsi di atas tidak digunakan lagi dan daftar default termasuk direktori tersedia di Project PropertiesConfigurationVC ++ Directories

Dalam kasus Anda, tambahkan direktori tempat header tersebut berada ke properti proyek ( Properti ProyekKonfigurasiC / C ++UmumDirektori Sertakan Tambahan ).


3
Jawaban bagus, tapi saya harus menambahkan, bahwa di Visual Studio 2003, Anda harus melihat "Tools | Options | VC ++ Directories" bukan "Tools | Options | Projects and Solutions | VC ++ Directories".
Graf

37
preprocessor di VS 2010 melihat ke direktori saat ini hanya jika sintaks include yang dikutip digunakan (misalnya #include "anything.h"). Menggunakan tanda kurung sudut (misalnya #include <
anything.h

5
Dalam Visual Studio 2010 dan yang lebih baru, "standar C ++ direktori" tidak lagi di bawah alat-> pilihan dan dalam lembar properti global: blogs.msdn.com/b/vsproject/archive/2009/07/07/...
mooing Bebek

8
Saya ingin tahu bahwa belum ada yang memberi tahu hanya direktori default. Jadi, ini dia <root dir of Visual Studio>/VC/include/. Saya memiliki MSVC di PC pekerjaan saya dari pengguna sebelumnya, tetapi saya menggunakan GNU / Linux, dan tidak ingin meluncurkan VC hanya untuk memuaskan rasa ingin tahu saya untuk melihat header Microsoft®. Btw, tentang jenis keingintahuan yang saya miliki: Saya menemukan bahwa MSDN bahkan tidak mengetahui nama headernya sendiri! Yaitu yang mereka maksud Iphlpapi.h, tetapi file seperti itu tidak ada, namanya agak iphlpapi.h, baik IPHlpApi.h(keduanya ada)! lol
Hi-Angel

17
Opsi "VS> Alat> Opsi> Proyek dan Solusi> Direktori VC ++" sekarang tidak berlaku lagi.
BG BRUNO

24

Sebenarnya di windows 10 saya dengan komunitas visual studio 2017, jalur header C ++ adalah:

  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 mengandung standar C ++ header seperti <iostream>, <algorithm>. 2 mengandung C header lama seperti <stdio.h>, <string.h>. Nomor versi dapat berbeda berdasarkan perangkat lunak Anda.

Semoga ini bisa membantu.


1
Ini adalah jawaban paling langsung untuk OP. Meskipun jawaban lain berbicara tentang masalah lain, ini harus menjadi jawaban yang diterima.
winux

@linrongbin Saya mencari direktori yang dibuat oleh instalasi VS Build Tools terbaru. Anda benar tentang yang pertama. Tapi saya tidak mencentang opsi Windows SDK, jadi itu berarti saya tidak memiliki header C, yang berarti alur kerja C ++ di BuildTools tidak mendukung C.
Hatebit

11

Jika proyek datang dengan berkas proyek Visual Studio, maka itu seharusnya sudah dikonfigurasi untuk menemukan header untuk Anda. Jika tidak, Anda harus menambahkan direktori file include ke pengaturan proyek dengan mengklik kanan proyek dan memilih Properties, mengklik "C / C ++", dan menambahkan direktori yang berisi file include ke "Direktori Tambahan Termasuk" kotak edit.


6

Mencoba menambahkan ini sebagai komentar pada posting Rob Prouse , tetapi kurangnya format membuatnya tidak dapat dipahami.

Dalam Visual Studio 2010, dialog "Tools | Options | Projects and Solutions | VC ++ Directories" melaporkan bahwa "VC ++ Directories editing di Tools> Options telah ditinggalkan", mengusulkan agar Anda menggunakan Property Manager yang agak kontra-intuitif.

Jika Anda benar-benar ingin memperbarui $ (IncludePath) default, Anda harus meretas entri yang sesuai di salah satu file XML:

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

atau

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

(Mungkin tidak direkomendasikan Microsoft.)


6

Tampaknya ada bug dalam komunitas Visual Studio 2015. Untuk proyek 64-bit, folder penyertaan tidak ditemukan kecuali ada dalam konfigurasi win32 bit daftar Sertakan Tambahan .


3
Apakah Anda punya link ke bug ini atau referensi ke sana?
Preet Sangha

Tidak, saya menemukannya sendiri dan tidak melaporkannya
Markus

5

Ada pertanyaan baru apa yang memukul masalah lebih baik menanyakan Bagaimana cara menyertakan jalur bekerja di Visual Studio?

Ada semakin terungkap cara melakukannya di versi VisualStudio yang lebih baru

  • dalam proyek saat ini saja (karena pertanyaannya diatur di sini juga) serta
  • untuk setiap proyek baru sebagai default

Yang kedua adalah jawaban dari Steve Wilkinson di atas menjelaskan, apa yang, menurut dugaannya sendiri, bukan apa yang akan direkomendasikan Microsoft.

Singkatnya di sini: lakukan, tetapi lakukan di Direktori Pengguna di

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

dalam file XML

Microsoft.Cpp.Win32.user.props

dan / atau

Microsoft.Cpp.x64.user.props

dan bukan di direktori C: \ program files -, tempat File Pabrik Microsoft yang tidak dimodifikasi diharapkan berada.

Kemudian Anda melakukannya dengan cara seperti VisualStudio melakukannya juga dan semuanya teratur.

Untuk info lebih lanjut mengapa melakukannya sama, lihat jawaban saya di sana .


2
Jika hanya judul yang memiliki "C ++" di dalamnya, dan mengenali bug yang mencari jalur 64 bit di bagian jalur 32 bit
Markus
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.