質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

Q&A

解決済

1回答

1597閲覧

【VS Code】d3d11.hのインクルードエラーを解決したい

X_III

総合スコア3

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

0グッド

0クリップ

投稿2022/03/21 08:19

概要

現在、VSCodeでDirectX11の勉強を始めようと思っていて、入門サイトのコードを丸コピして貼り付けて、動くかどうかをまず確認していたのですが、うまくいきませんでした。
具体的には、#include <d3d11.h> でコンパイルが失敗しました。
コード等々は以下のとおりです。

コード

test.cpp

1#include <iostream> 2#include <windows.h> 3#include <d3d11.h> 4 5int main(){ 6 std::cout << "Hello world!" << std::endl; 7 return 0; 8}

エラー内容

PS C:\Users\[UserName]\MyPrograms\test> g++ test.cpp test.cpp:3:10: fatal error: d3d11.h: No such file or directory 3 | #include <d3d11.h> | ^~~~~~~~~ compilation terminated.

やってみた対策

パスが通っていないため、d3d11.hが見つからないということで、c_cpp_properties.jsonでインクルードパスを追加する、というものがあったので、やってみましたが、うまくいきませんでした。

c_cpp_properties.json

1{ 2 "configurations": [ 3 { 4 "name": "Win32", 5 "includePath": [ 6 "${workspaceFolder}/**", 7 "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um", //追加。d3d11.hはちゃんとここにありました。 8 "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared" 9 ], 10 "defines": [ 11 "_DEBUG", 12 "UNICODE", 13 "_UNICODE" 14 ], 15 "windowsSdkVersion": "10.0.19041.0", 16 "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe", 17 "cStandard": "c17", 18 "cppStandard": "c++17", 19 "intelliSenseMode": "windows-msvc-x64" 20 } 21 ], 22 "version": 4 23}

これをやっても解決しませんでした。
試しにF12を押すと、d3d11.hの定義に飛べたので、あまり意味はなかったのかもしれません......。

ご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cx20

2022/03/21 10:04

何か変ですね。 compilerPath は cl.exe を指定しているようですが、 実際に使用されているのは g++ のようです。
X_III

2022/03/21 10:59

初歩的な質問かもしれませんが、もしかすると、  > g++ ...... とターミナルで記述してg++でコンパイルしている場合はc_cpp_properties.jsonは関係ないんでしょうか? このあたりの話がいまいちよくわかっていないです。
cx20

2022/03/21 11:05

Visual Studio Code での開発に詳しくないですが g++ を使う場合は c_cpp_properties.json の compilerPath も g++ にする必要があるのではないでしょうか? ■ Visual Studio Code での C++ の初期設定 (Windows x gcc(MinGW) 編) https://qiita.com/OcoToOo/items/f1d0a125327f5659ad52
cx20

2022/03/21 11:17

もしくは DirectX の開発であれば Visual C++ を使った方が環境の問題に陥ることは少ないかと思います。
X_III

2022/03/21 12:30

visual c++ですか! vscodeは最強エディタ!みたいなことを聞いて、最近そっちで書いてみようとか思ってたんですけど、得意不得意で使い分けていかないとだめですねぇ......ありがとうございます!
cx20

2022/03/21 12:45

> 得意不得意で使い分け そうですね。VSCodeはエディタとして使う分には良いかと思いますが、デバッグ実行等をするのであれば Visual Studio(+ Visual C++)の方が良いかと思います。
Bull

2022/03/21 12:59 編集

MinGW には d3d11.h は含まれていないようですね。 MinGW-W64 ならあるようですが。 d3d11.h は Windows SDK に含まれるので、Visual Studio (MSVC) であれば問題なく使えます。 余談ですけど、VScode でも cl.exe (MSVC) での開発はできます。
X_III

2022/03/21 14:05 編集

> MinGW には d3d11.h は含まれていないようですね。 これは、MinGWでは、d3d11.hを-IでWindows Kit/......のインクルードパスを指定して引っ張ってきても使えないということなんでしょうか?
cx20

2022/03/21 14:32

MinGW で DirectX11 を使う方法も一応あるようですが、ビルドするにはひと手間かける必要があるようです。個人的な意見としては入門としては少し難易度が高いのでは、と思います。 ■ MinGWからDirect3D11を呼び出す https://tsubaki.hatenablog.com/entry/20110115/1295080728
guest

回答1

0

ベストアンサー

ファイルがない、とおっしゃってますんで、コンパイラのオプションでインクルードディレクトリの設定を行う必要があります。
VSCodeの設定は関係ありません。

で、そのincludeは必要なもんですか?

投稿2022/03/21 08:44

編集2022/03/21 08:44
y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

X_III

2022/03/21 10:56

ご回答ありがとうございます。 main()関数の処理を見ていただくとこのincludeは確かに要らないんですが、 元々DirectXの機能を用いたプログラムを組んで同じような問題が確認された次第です。 これはincludeで起きている問題ということで、includeするだけで発生する問題なのか確認するためにこのコードを書いてみただけで、main()関数の中身は今回はあまり気にしていません。 > コンパイラのオプションでインクルードディレクトリの設定を行う必要があります。 ということは、gcc/g++の-I コマンドとか、そのあたりの話ということでしょうか?
y_waiwai

2022/03/21 11:23

> ということは、gcc/g++の-I コマンドとか、そのあたりの話ということでしょうか? まさにそのとおりです c_cpp_propertiesのインクルードディレクトリの設定ってのは、あくまでVscodeの中での構文チェックのためのものなので、コンパイル時のそれとは違います コンパイルオプションを設定するなら、tasks.jsonとかそこらへんなのかな? #ここらへんはあなたのVScodeの環境により変わりますんで、確かなことは言えませんが
X_III

2022/03/21 12:31

> c_cpp_propertiesのインクルードディレクトリの設定ってのは、あくまでVscodeの中での構文チェックのためのものなので、コンパイル時のそれとは違います とてもいいことを聞きました。ちょっと調べてきます!
X_III

2022/03/21 15:18

試しに見よう見まねで、 task.jsonをこんなかんじでやってみたのですが、 { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build using gcc/g++", "type": "shell", "options": { "cwd": "${workspaceRoot}", "env": { "PATH": "C:\\gcc\\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\\mingw64\\bin" }, "shell": { "executable": "${env:windir}\\system32\\cmd.exe", "args": [ "/d", "/c" ] } }, "command": "g++.exe", "args": [ "-cpp", "-o", "${workspaceFolder}\\${fileBasenameNoExtension}_g++.exe", "${fileBasename}", "-I", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um", "-I", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared" ], "presentation": { "echo": true, "reveal": "always", "focus": true, "panel": "shared", "showReuseMessage": true, "clear": false }, "problemMatcher": [], } ] } おびただしい量のエラーコードが吐き出されました。 https://teratail.com/questions/218637 ちょうどこの方のと似ています。 vscodeでDirectXは私にはちょっと敷居が高いかもしれないですね💦
y_waiwai

2022/03/21 23:25

いきなりVSCodeでコンパイルさせようとしてないで、コマンドラインでコンパイルしてみましょう gccの使い方をまずはマスターする必要があります
X_III

2022/03/25 14:52 編集

返信遅くなりました。 gcc/gppコンパイラで-Iでインクルードパスを通してやってみても、あまり変化なかったです。 > g++ test.cpp -I "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um" -I "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared" こんな感じでやってみました。 ただ、やはりおびただしい量のエラーではありましたが、no such file or directory系のエラーは無くなっていました! 今気づきました😂 ひとまず、インクルードエラーについては解決です、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問