2011-10-27 36 views
18

Vì vậy, tôi đã cài đặt lại directx11 một vài lần và thậm chí đã đi đến trang web của Microsoft và có gói SDK có tất cả các tệp nội bộ x trực tiếp trong đó. Bất cứ ai cũng có bất kỳ ý tưởng tại sao tôi tiếp tục nhận được lỗi này sau đó? Tôi biết tại sao nó đang nói nó nhưng tìm kiếm giải pháp cho nó.d3dx11.h bị thiếu?

1> c: \ users \ vaughn \ ​​documents \ visual studio 2010 \ dự án \ myfirstapp \ myfirstapp \ main.cpp (5): lỗi nghiêm trọng C1083: Không thể mở bao gồm file: 'd3dx11.h' : Không có tệp hoặc thư mục nào như vậy

+1

Bạn đã thêm thư mục cần thiết vào thư mục bao gồm chưa? – FailedDev

Trả lời

28

Đó là những gì bạn cần làm trong VS 2010 (có vẻ hơi khác trong VS 2008 và trước đó):

Chuyển đến thuộc tính của dự án | Thuộc tính cấu hình | Thư mục VC++. Chỉnh sửa dòng được gọi là Bao gồm thư mục bằng cách thêm đường dẫn đến tệp tiêu đề DirectX. Đối với tháng 6 năm 2010 SDK nó có thể là điều gì đó như:

32 bit Win: C: \ Program Files \ Microsoft DirectX SDK (tháng 6 năm 2010) \ Bao gồm

64 bit Win: C: \ Program Files (x86) \ Microsoft DirectX SDK (tháng 6 năm 2010) \ Bao gồm

Tiếp theo, bạn có nhiều khả năng gặp lỗi của một liên kết (thiếu tệp .lib). Chỉ cần đi đến tài sản của dự án của bạn | Thuộc tính cấu hình | VC++ Thư mục một lần nữa, nhưng lần này mục chỉnh sửa Thư viện và thêm một trong các đường dẫn sau:

32 bit Win: C: \ Program Files \ Microsoft DirectX SDK (tháng 6 năm 2010) \ lib \ x86

64 bit Win: C: \ Program Files (x86) \ Microsoft DirectX SDK (tháng 6 năm 2010) \ Lib \ x64

Nếu bạn cài đặt phiên bản SDK khác hoặc cài đặt nó vào thư mục không thay đổi đường dẫn mặc định cho phù hợp. Ngoài ra hãy chắc chắn rằng bạn đã thêm d3d11.lib (và có thể d3dx11.lib) vào Linker | Phụ thuộc bổ sung.

Quy tắc chung là bất kỳ lúc nào bạn #include <> các tệp mà IDE của bạn cần biết nơi tìm chúng. Thư mục VC++ là một cách để thực hiện điều đó trong Visual Studio. Tuy nhiên, việc bao gồm tiêu đề duy nhất là (trong hầu hết các trường hợp) là không đủ - bạn cần phải nói cho người liên kết biết nơi tìm kiếm các tệp nhị phân được biên dịch trước được mô tả bởi các tiêu đề đó. Đó là những gì bạn làm bằng cách thêm đường dẫn thứ hai vào Thư mục Thư viện.

+0

Được rồi, tôi sẽ thử. Tôi nghĩ rằng tôi đã làm điều này bởi vì đó là những gì các hướng dẫn bài tập nói với tôi để làm nhưng tôi sẽ kiểm tra lại tất cả mọi thứ. –

+0

Cảm ơn bạn đã giúp đỡ, hóa ra tôi đã thiếu các thư mục VC++ và các thư viện liên kết cho Direct X11. –

+3

Điều gì về việc sử dụng biến môi trường% DXSDK_DIR%/Bao gồm? – qdii

0

Bạn phải đảm bảo bạn nhận được DirectX SDK mới nhất. Nó có các tập tin tiêu đề. Nếu tất cả những gì bạn nhận được là các tệp nội các, bạn đã nhận được SDK sai.

+0

Tôi đã tải xuống và nó vẫn cho tôi biết rằng nó không thể tìm thấy nó? Nếu tôi nhận xét ra dòng yêu cầu truy cập vào tập tin nó hoạt động nhưng sau đó nó làm cho tôi cũng bình luận ra các tập tin d3dx10.h là tốt và nó tải tốt. –

+0

Bạn có thể tìm kiếm hệ thống của mình cho d3dx * .h để xem các tệp tiêu đề chính xác đã được cài đặt ở đâu không? –

+0

Nó không bật lên ngay cả sau khi cài đặt lại như 4 lần. –

0

Trong trường hợp của tôi, đối với DX12, tôi nhớ da diết d3dx12.h

Xem this MSDN trang.

Trong trường hợp di chuyển trang, dòng tương ứng dường như là

"d3dx12.h có sẵn tách rời với Direct3D 12 tiêu đề. Bạn có thể tải d3dx12.h bằng cách điều hướng vào bất kỳ tập tin nguồn cho các dự án Direct3D 12 tại GitHub/Microsoft/DirectX-Graphics-Samples "

+4

SDK DirectX là kế thừa và D3DX9, D3DX10 và D3DX11 không được chấp nhận. Để biết danh sách các thay thế, xem [Sống không có D3DX] (https://blogs.msdn.microsoft.com/chuckw/2013/08/20/living-without-d3dx/). D3DX12 không phải là một phần của Windows SDK hoặc SDK DirectX. Nó được dự định chỉ được sao chép vào dự án của bạn, nó được cung cấp trên [GitHub] (https://github.com/Microsoft/DirectX-Graphics-Samples/blob/master/Templates/DirectX12App/Common/d3dx12.h) theo Giấy phép MIT. Nó cũng được bao gồm trong các mẫu DirectX 12 VS khác nhau bao gồm [this] (https://github.com/walbourn/directx-vs-templates/wiki). –