Visual Studio tìm kiếm tệp tiêu đề C ++ ở đâu?


94

Tôi đã kiểm tra bản sao của một ứng dụng C ++ từ SourceForge (HoboCopy, nếu bạn tò mò) và cố gắng biên dịch nó.

Visual Studio cho tôi biết rằng nó không thể tìm thấy một tệp tiêu đề cụ thể. Tôi đã tìm thấy tệp trong cây nguồn, nhưng tôi cần đặt nó ở đâu, để nó được tìm thấy khi biên dịch?

Có những thư mục đặc biệt?

Câu trả lời:


114

Visual Studio tìm kiếm các tiêu đề theo thứ tự sau:

  • Trong thư mục nguồn hiện tại.
  • Trong Thư mục Bao gồm Bổ sung trong các thuộc tính của dự án ( Thuộc tính Dự án -> [tên dự án] , trong C / C ++ | Chung).
  • Trong Visual Studio C ++ Bao gồm các thư mục trong Công cụTùy chọnDự án và giải phápThư mục VC ++ .
  • Trong các phiên bản mới của Visual Studio (2015+), tùy chọn trên không được dùng nữa và danh sách các thư mục bao gồm mặc định có sẵn tại Thuộc tính dự ánCấu hìnhThư mục VC ++

Trong trường hợp của bạn, hãy thêm thư mục có tiêu đề vào thuộc tính dự án ( Thuộc tính dự ánCấu hìnhC / C ++ChungThư mục bao gồm bổ sung ).


3
Câu trả lời rất hay, nhưng tôi phải nói thêm rằng trong Visual Studio 2003, bạn nên xem "Tools | Options | VC ++ Directories" chứ không phải "Tools | Options | Projects and Solutions | VC ++ Directories".
Graf

36
bộ tiền xử lý trong VS 2010 chỉ xem xét dir hiện tại nếu cú ​​pháp bao gồm được trích dẫn được sử dụng (ví dụ: #include "anything.h"). Sử dụng dấu ngoặc nhọn (ví dụ #include <whatever.h>) bỏ qua các thư mục hiện hành ( msdn.microsoft.com/en-us/library/36k2cdd4(v=VS.100).aspx )
Dennis Münkle

5
Trong Visual Studio 2010 và mới hơn, các "tiêu chuẩn C ++ thư mục" không còn thuộc công cụ-> Tùy chọn và đang trong một tờ bất động sản toàn cầu: blogs.msdn.com/b/vsproject/archive/2009/07/07/...
Mooing Duck

8
Tôi tự hỏi rằng chưa ai nói chỉ với thư mục mặc định. Vì vậy, nó đây <root dir of Visual Studio>/VC/include/. Tôi có một MSVC trong PC công việc của mình từ người dùng trước, nhưng tôi đang sử dụng GNU / Linux và không muốn khởi chạy VC chỉ để thỏa mãn sự tò mò của tôi khi xem các tiêu đề của Microsoft®. Btw, về loại tò mò mà tôi có: Tôi thấy rằng MSDN thậm chí không biết tên tiêu đề của chính nó! Tức là họ gọi Iphlpapi.h, nhưng một tập tin không tồn tại, nó tên là thay iphlpapi.h, một trong hai IPHlpApi.h(cả hai đều có)! lol
Hi-Thiên thần

17
Tùy chọn "VS> Công cụ> Tùy chọn> Dự án và Giải pháp> Thư mục VC ++" hiện đã được mô tả.
BG BRUNO

21

Trên thực tế, trên windows 10 của tôi với cộng đồng visual studio 2017, đường dẫn tiêu đề C ++ là:

  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 chứa tiêu chuẩn C ++ tiêu đề như <iostream>, <algorithm>. Thứ 2 chứa các tiêu đề C cũ như <stdio.h>,<string.h> . Số phiên bản có thể khác nhau dựa trên phần mềm của bạn.

Hy vọng điều này sẽ giúp ích.


1
Đây là câu trả lời trực tiếp nhất cho OP. Mặc dù các câu trả lời khác nói về các vấn đề khác, nhưng đây phải là câu trả lời được chấp nhận.
winux

@linrongbin Tôi đang tìm kiếm các thư mục được tạo bởi cài đặt VS Build Tools mới nhất. Bạn nói đúng về điều đầu tiên. Nhưng tôi bỏ chọn tùy chọn Windows SDK, do đó có hiệu quả có nghĩa là tôi không có C tiêu đề, do đó có nghĩa là C ++ workflow trong BuildTools không hỗ trợ C.
Hatebit

11

Nếu dự án đi kèm với tệp dự án Visual Studio, thì tệp đó đã phải được định cấu hình để tìm tiêu đề cho bạn. Nếu không, bạn sẽ phải thêm thư mục tệp bao gồm vào cài đặt dự án bằng cách nhấp chuột phải vào dự án và chọn Thuộc tính, nhấp vào "C / C ++" và thêm thư mục chứa tệp bao gồm vào "Thư mục bao gồm bổ sung" hộp chỉnh sửa.


6

Cố gắng thêm điều này làm bình luận cho bài đăng của Rob Prouse , nhưng việc thiếu định dạng khiến nó không thể hiểu được.

Trong Visual Studio 2010, hộp thoại "Công cụ | Tùy chọn | Dự án và Giải pháp | Thư mục VC ++" báo cáo rằng "Chỉnh sửa Thư mục VC ++ trong Công cụ> Tùy chọn đã không được chấp nhận", đề xuất rằng bạn sử dụng Trình quản lý Thuộc tính khá phản trực quan.

Nếu bạn thực sự, thực sự muốn cập nhật $ (include) mặc định, bạn phải hack mục nhập thích hợp vào một trong các tệp XML:

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

hoặc là

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

(Có lẽ không phải do Microsoft khuyến nghị.)


6

Dường như có một lỗi trong cộng đồng Visual Studio 2015. Đối với một dự án 64 bit, thư mục bao gồm không được tìm thấy trừ khi nó nằm trong cấu hình win32 bit Danh sách Thư mục Bao gồm Bổ sung .


3
Bạn có liên kết đến lỗi này hoặc tham khảo về nó không?
Tăng đoàn

Không, tôi tự tìm thấy nó và không báo cáo
Markus

5

Có một câu hỏi mới hơn là gì đang giải quyết vấn đề tốt hơn hỏi Làm thế nào để bao gồm các đường dẫn hoạt động trong Visual Studio?

Đang được tiết lộ cách để làm điều đó trong các phiên bản mới hơn của VisualStudio

  • chỉ trong dự án hiện tại (như câu hỏi cũng được đặt ở đây) cũng như
  • cho mọi dự án mới làm mặc định

Thứ hai là câu trả lời của Steve Wilkinson ở trên giải thích điều gì, như bản thân ông cho rằng, không phải những gì Microsoft muốn giới thiệu.

Nói một cách ngắn gọn ở đây: hãy làm điều đó, nhưng hãy làm điều đó trong Thư mục người dùng tại

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

trong tệp XML

Microsoft.Cpp.Win32.user.props

và / hoặc

Microsoft.Cpp.x64.user.props

và không nằm trong thư mục C: \ program files -, nơi lưu trữ Factory-File chưa được sửa đổi của Microsoft.

Sau đó, bạn làm điều đó theo cách VisualStudio cũng đang làm và mọi thứ đều bình thường.

Để biết thêm thông tin tại sao phải làm điều đó giống nhau, hãy xem câu trả lời của tôi ở đó .


1
Giá như tiêu đề có "C ++" trong đó và thừa nhận lỗi tìm kiếm đường dẫn 64 bit trong phần đường dẫn 32 bit
Markus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.