概要
現在、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の定義に飛べたので、あまり意味はなかったのかもしれません......。
ご教授お願いいたします。
何か変ですね。
compilerPath は cl.exe を指定しているようですが、
実際に使用されているのは g++ のようです。
初歩的な質問かもしれませんが、もしかすると、
> g++ ......
とターミナルで記述してg++でコンパイルしている場合はc_cpp_properties.jsonは関係ないんでしょうか?
このあたりの話がいまいちよくわかっていないです。
Visual Studio Code での開発に詳しくないですが
g++ を使う場合は c_cpp_properties.json の compilerPath も g++ にする必要があるのではないでしょうか?
■ Visual Studio Code での C++ の初期設定 (Windows x gcc(MinGW) 編)
https://qiita.com/OcoToOo/items/f1d0a125327f5659ad52
もしくは DirectX の開発であれば Visual C++ を使った方が環境の問題に陥ることは少ないかと思います。
visual c++ですか!
vscodeは最強エディタ!みたいなことを聞いて、最近そっちで書いてみようとか思ってたんですけど、得意不得意で使い分けていかないとだめですねぇ......ありがとうございます!
> 得意不得意で使い分け
そうですね。VSCodeはエディタとして使う分には良いかと思いますが、デバッグ実行等をするのであれば Visual Studio(+ Visual C++)の方が良いかと思います。
MinGW には d3d11.h は含まれていないようですね。
MinGW-W64 ならあるようですが。
d3d11.h は Windows SDK に含まれるので、Visual Studio (MSVC) であれば問題なく使えます。
余談ですけど、VScode でも cl.exe (MSVC) での開発はできます。
> MinGW には d3d11.h は含まれていないようですね。
これは、MinGWでは、d3d11.hを-IでWindows Kit/......のインクルードパスを指定して引っ張ってきても使えないということなんでしょうか?
MinGW で DirectX11 を使う方法も一応あるようですが、ビルドするにはひと手間かける必要があるようです。個人的な意見としては入門としては少し難易度が高いのでは、と思います。
■ MinGWからDirect3D11を呼び出す
https://tsubaki.hatenablog.com/entry/20110115/1295080728
回答1件
あなたの回答
tips
プレビュー