Gdzie program Visual Studio szuka plików nagłówkowych C ++?


95

Sprawdziłem kopię aplikacji C ++ z SourceForge (HoboCopy, jeśli jesteś ciekawy) i próbowałem ją skompilować.

Program Visual Studio informuje mnie, że nie może znaleźć określonego pliku nagłówkowego. Znalazłem plik w drzewie źródłowym, ale gdzie mam go umieścić, aby został znaleziony podczas kompilacji?

Czy istnieją specjalne katalogi?

Odpowiedzi:


116

Program Visual Studio szuka nagłówków w tej kolejności:

  • W bieżącym katalogu źródłowym.
  • W sekcji Dodatkowe katalogi włączania we właściwościach projektu ( Projekt -> [nazwa projektu] Właściwości , w C / C ++ | Ogólne).
  • W Visual Studio C ++ Uwzględnij katalogi w obszarze NarzędziaOpcjeProjekty i rozwiązaniaKatalogi VC ++ .
  • W nowych wersjach programu Visual Studio (2015+) powyższa opcja jest przestarzała, a lista domyślnych katalogów uwzględniających jest dostępna w Project PropertiesConfigurationVC ++ Directories

W twoim przypadku dodaj katalog, który jest nagłówkiem do właściwości projektu ( Właściwości projektuKonfiguracjaC / C ++OgólneDodatkowe katalogi dołączania ).


3
Dobra odpowiedź, ale muszę dodać, że w Visual Studio 2003 powinieneś spojrzeć na "Narzędzia | Opcje | Katalogi VC ++" a nie "Narzędzia | Opcje | Projekty i rozwiązania | Katalogi VC ++".
Graf,

37
preprocesor w VS 2010 zagląda do bieżącego katalogu tylko wtedy, gdy używana jest cytowana składnia dołączania (np. #include "cokolwiek.h"). Użycie nawiasów kątowych (np. #Include <cokolwiek.h>) pomija bieżący
katalog

5
W Visual Studio 2010 i nowszych, „standard C ++ katalogi” nie jest już pod Narzędzia-> Opcje i jest w globalnym arkuszu właściwości: blogs.msdn.com/b/vsproject/archive/2009/07/07/...
mooing Duck

8
Zastanawiam się, że nikt jeszcze nie powiedział tylko o domyślnym katalogu. A więc oto jest <root dir of Visual Studio>/VC/include/. Mam w swoim komputerze roboczym MSVC od poprzedniego użytkownika, ale używam systemu GNU / Linux i nie chciałem uruchamiać VC tylko po to, aby zaspokoić moją ciekawość spojrzenia na nagłówki Microsoft®. A propos, jaką ciekawość miałem: stwierdziłem, że MSDN nawet nie zna swoich nazw nagłówków! Tzn, o którym mowa Iphlpapi.h, ale taki plik nie istnieje, to nazwa jest raczej iphlpapi.h, albo IPHlpApi.h(oba są tam)! lol
Hi-Angel,

17
Opcja „VS> Narzędzia> Opcje> Projekty i rozwiązania> Katalogi VC ++” została usunięta.
BG BRUNO

24

W rzeczywistości na moim systemie Windows 10 ze społecznością Visual Studio 2017 ścieżka nagłówków C ++ to:

  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

The 1st zawiera standardowe C ++, takie jak nagłówki <iostream>, <algorithm>. Drugi zawiera stare nagłówki C, takie jak <stdio.h>,<string.h> . Numer wersji może się różnić w zależności od oprogramowania.

Mam nadzieję, że to pomoże.


1
To najbardziej bezpośrednia odpowiedź na OP. Chociaż inne odpowiedzi dotyczą innych kwestii, to powinna być akceptowana odpowiedź.
winux

@linrongbin Oczyszczam katalogi, które zostały utworzone podczas ostatniej instalacji VS Build Tools. Masz rację co do pierwszego. Ale odznaczyłem opcję Windows SDK, więc skutecznie oznacza to, że nie mam nagłówków C, co z kolei oznacza, że ​​przepływ pracy C ++ w BuildTools nie obsługuje C.
Hatebit

11

Jeśli projekt został dostarczony z plikiem projektu programu Visual Studio, to powinno być już skonfigurowane, aby znaleźć dla Ciebie nagłówki. Jeśli nie, będziesz musiał dodać katalog plików dołączanych do ustawień projektu, klikając projekt prawym przyciskiem myszy i wybierając Właściwości, klikając „C / C ++” i dodając katalog zawierający pliki dołączane do „Dodatkowe katalogi dołączane” pole edycji.


6

Próbowałem dodać to jako komentarz do Roba Prouse'a , ale brak formatowania sprawił, że był on niezrozumiały.

W programie Visual Studio 2010 okno dialogowe „Narzędzia | Opcje | Projekty i rozwiązania | Katalogi VC ++” informuje, że „Edycja katalogów VC ++ w menu Narzędzia> Opcje została wycofana”, proponując użycie raczej sprzecznego z intuicją Menedżera właściwości.

Jeśli naprawdę chcesz zaktualizować domyślną $ (IncludePath), musisz zhakować odpowiedni wpis w jednym z plików XML:

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

lub

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

(Prawdopodobnie niezalecane przez Microsoft.)


6

Wygląda na to, że w społeczności programu Visual Studio 2015 występuje błąd. W przypadku projektu 64-bitowego folder dołączania nie zostanie znaleziony, chyba że znajduje się na liście dodatkowych folderów dołączanych konfiguracji win32 .


3
Czy masz link do tego błędu lub odniesienie do niego?
Preet Sangha

Nie, znalazłem to sam i nie zgłosiłem tego
Markus

5

Istnieje nowsze pytanie, co lepiej trafia w problem Jak działają ścieżki dołączania w programie Visual Studio?

W nowszych wersjach VisualStudio ujawnia się, jak to zrobić

  • tylko w bieżącym projekcie (ponieważ pytanie jest tutaj ustawione), a także
  • domyślnie dla każdego nowego projektu

Po drugie, to, co wyjaśnia powyższa odpowiedź Steve'a Wilkinsona, a co, jak sam przypuszczał, nie jest tym, co zaleca Microsoft.

Krótko mówiąc: zrób to, ale zrób to w katalogu użytkowników pod adresem

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

w pliku XML

Microsoft.Cpp.Win32.user.props

i / lub

Microsoft.Cpp.x64.user.props

a nie w katalogu C: \ program files -, w którym powinien znajdować się niezmodyfikowany plik Factory-File firmy Microsoft.

Następnie robisz to tak, jak robi to VisualStudio i wszystko jest normalne.

Aby uzyskać więcej informacji, dlaczego robić to samo, zobacz moją odpowiedź tam .


2
Gdyby tylko tytuł zawierał „C ++” i potwierdził błąd szukający ścieżek 64-bitowych w sekcji ścieżki 32-bitowej
Markus,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.