Visual Studio, C ++ üstbilgi dosyalarını nerede arar?


96

SourceForge'dan (merak ediyorsanız HoboCopy) bir C ++ uygulamasının bir kopyasını kontrol ettim ve derlemeye çalıştım.

Visual Studio bana belirli bir başlık dosyasını bulamadığını söylüyor. Dosyayı kaynak ağacında buldum, ancak derleme sırasında bulunması için nereye koymam gerekiyor?

Özel dizinler var mı?

Yanıtlar:


120

Visual Studio, şu sırayla üstbilgileri arar:

  • Geçerli kaynak dizinde.
  • Proje özelliklerinde Ek Dizinleri Dahil Et bölümünde ( Proje -> [proje adı] Özellikleri , C / C ++ | Genel altında).
  • Visual Studio C ++ 'da AraçlarSeçeneklerProjeler ve ÇözümlerVC ++ Dizinleri altındaki dizinleri dahil edin .
  • Visual Studio'nun (2015+) yeni sürümlerinde yukarıdaki seçenek kullanımdan kaldırılmıştır ve varsayılan dahil etme dizinlerinin bir listesi Proje ÖzellikleriYapılandırmaVC ++ Dizinlerinde mevcuttur

Sizin durumunuzda, başlığın olduğu dizini proje özelliklerine ekleyin ( Proje ÖzellikleriKonfigürasyonC / C ++GenelEk Dahil Etme Dizinleri ).


3
Güzel yanıt, ancak şunu eklemeliyim ki, Visual Studio 2003'te "Araçlar | Seçenekler | VC ++ Dizinleri" 'ne bakmalısınız "Araçlar | Seçenekler | Projeler ve Çözümler | VC ++ Dizinleri" değil.
Graf

38
VS 2010'daki önişlemci, yalnızca alıntı yapılan include sözdizimi kullanılıyorsa geçerli dizine bakar (örneğin, #include "ne olursa olsun.h"). Köşeli parantezlerin kullanılması (örneğin #include <ne olursa
olsun.h

5
Visual Studio 2010 ve daha yeni sürümlerde, "standart C ++ dizinleri" artık araçlar-
Mooing Duck

8
Henüz kimsenin sadece varsayılan dizini söylemediğini merak ediyorum. İşte burada <root dir of Visual Studio>/VC/include/. İş bilgisayarımda önceki kullanıcıdan bir MSVC var, ancak GNU / Linux kullanıyorum ve sadece Microsoft®'un başlıklarına bakma merakımı gidermek için VC'yi başlatmak istemiyorum. Btw, ne tür bir merakım olduğu hakkında: MSDN'nin kendi başlık adlarını bile bilmediğini fark ettim! Yani atıfta bulundular Iphlpapi.h, ama böyle bir dosya mevcut değil iphlpapi.h, adı da IPHlpApi.h(ikisi de var)! lol
Hi-Angel

17
"VS> Araçlar> Seçenekler> Projeler ve Çözümler> VC ++ Dizinleri" seçeneği artık kısıtlanmıştır.
BG BRUNO

25

Aslında, visual studio 2017 topluluğuna sahip Windows 10'umda, C ++ üstbilgi yolu:

  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. gibi standart C ++ başlıkları içerir <iostream>, <algorithm>. 2 gibi eski C başlıklarını içermektedir <stdio.h>, <string.h>. Sürüm numarası, yazılımınıza bağlı olarak farklı olabilir.

Umarım bu yardımcı olur.


1
Bu, OP'nin en doğrudan cevabıdır. Diğer cevaplar başka konular hakkında konuşsa da, kabul edilen cevap bu olmalıdır.
winux

@linrongbin En son VS Build Tools yüklemesiyle oluşturulan dizinleri atıyorum. İlk konuda haklısın. Ancak Windows SDK seçeneğinin işaretini kaldırdım, bu da etkili bir şekilde C başlıklarına sahip olmadığım anlamına geliyor, bu da BuildTools'taki C ++ iş akışının C'yi desteklemediği anlamına geliyor.
Hatebit

11

Proje bir Visual Studio proje dosyasıyla geldiyse, bu sizin için üstbilgileri bulmak için zaten yapılandırılmış olmalıdır. Değilse, projeye sağ tıklayıp Özellikler'i seçerek, "C / C ++" üzerine tıklayarak ve içerme dosyalarını içeren dizini "Ek Dahil Etme Dizinlerine" ekleyerek içerme dosyası dizinini proje ayarlarına eklemeniz gerekir. düzenleme kutusu.


6

Bunu Rob Prouse'un gönderisine bir yorum olarak eklemeye çalıştım , ancak biçimlendirmenin olmaması onu anlaşılmaz hale getirdi.

Visual Studio 2010'da, "Araçlar | Seçenekler | Projeler ve Çözümler | VC ++ Dizinleri" iletişim kutusu, "Araçlar> Seçenekler'de VC ++ Dizinleri düzenlemenin kullanımdan kaldırıldığını" bildirerek, oldukça sezgisel Özellik Yöneticisi'ni kullanmanızı önerir.

Varsayılan $ (IncludePath) değerini gerçekten, gerçekten güncellemek istiyorsanız, XML dosyalarından birindeki uygun girişi kırmanız gerekir:

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

veya

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

(Muhtemelen Microsoft tarafından tavsiye edilmiyor.)


6

Visual Studio 2015 topluluğunda bir hata var gibi görünüyor. 64 bitlik bir proje için, win32 bit yapılandırmasının Ek Klasörleri Dahil Et listesinde olmadığı sürece içerme klasörü bulunmaz .


3
Bu hataya bir bağlantı veya referans var mı lütfen?
Preet Sangha

Hayır, kendim buldum ve bildirmedim
Markus

5

Daha yeni bir soru var, soruna daha iyi hitap eden nedir? Dahil etme yolları Visual Studio'da nasıl çalışır?

VisualStudio'nun daha yeni sürümlerinde bunu yapmanın yolu ortaya çıkıyor

  • sadece mevcut projede (soru burada da belirlendiği için) ve
  • varsayılan olarak her yeni proje için

İkincisi, yukarıda Steve Wilkinson'ın yanıtının açıkladığı şeydir, kendisinin sandığı gibi Microsoft'un önerdiği şey değildir.

Kısaca söylemek gerekirse: bunu yapın, ancak şu adresteki Kullanıcı Dizini'nde yapın

C: \ Kullanıcılar \ KullanıcıAdı \ AppData \ Local \ Microsoft \ MSBuild \ v4.0

XML dosyasında

Microsoft.Cpp.Win32.user.props

ve / veya

Microsoft.Cpp.x64.user.props

ve Microsoft'un değiştirilmemiş Fabrika Dosyasının beklendiği C: \ program files dizininde değil.

Sonra, VisualStudio'nun yaptığı gibi yaparsınız ve her şey normaldir.

Neden aynı şekilde yapılacağıyla ilgili daha fazla bilgi için oradaki cevabıma bakın .


2
Yalnızca başlığın içinde "C ++" varsa ve 32 bitlik yol bölümünde 64 bitlik yolları arayan hatayı kabul ettiyse
Markus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.