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

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

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

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

DirectX

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

解決済

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

X_III
X_III

総合スコア3

Visual Studio Code

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

DirectX

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

1回答

0評価

0クリップ

429閲覧

投稿2022/03/21 08:19

概要

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

コード

test.cpp

#include <iostream> #include <windows.h> #include <d3d11.h> int main(){ std::cout << "Hello world!" << std::endl; return 0; }

エラー内容

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

{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um", //追加。d3d11.hはちゃんとここにありました。 "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.19041.0", "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "windows-msvc-x64" } ], "version": 4 }

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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Visual Studio Code

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

DirectX

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