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

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

新規登録して質問してみよう
ただいま回答率
85.32%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

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

Q&A

解決済

1回答

248閲覧

DirectX12でのCompileShaderFromFile関数でエラーになってしまう

YukkeDon

総合スコア2

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

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

0グッド

0クリップ

投稿2025/02/28 10:16

編集2025/02/28 10:38

実現したいこと

DirectX12の以下のサンプルコードを実行したい
https://github.com/techlabxe/d3d12_book_1/tree/master/02_SimpleTriangle
※自分はC#をいじってきた人間なので低レベルであるC++は初心者になります

発生している問題・分からないこと

DirectX12のヘルパークラス?の中にある CD3DX12_SHADER_BYTECODE で pShaderBlob が nullptr と出てきます。
色々さかのぼってみると、そもそもシェーダー読み込みであるCompileShaderFromFileで以下のエラーが出てきます。

エラーメッセージ

error

1errBlob = 0x000002eff46ab520 <情報はありません。dxcompiler.dll のシンボルが読み込まれていません>

該当のソースコード

c++

1 // シェーダーをコンパイル. 2 HRESULT hr; 3 ComPtr<ID3DBlob> errBlob; 4 hr = CompileShaderFromFile(L"VertexShader.hlsl", L"vs_6_0", m_vs, errBlob); 5 if (FAILED(hr)) 6 { 7 OutputDebugStringA((const char*)errBlob->GetBufferPointer()); 8 }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Quiitaにあったプロジェクト直下にdxcompiler.dll を置いたりしてみましたが動かず…
どうしたらよいでしょうか?
https://qiita.com/suittizihou/items/e3237b1fd685af3252da

補足

IDE:visual studio 2022

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

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

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

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

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

guest

回答1

0

ベストアンサー

Windows 11、Visual Studio 2022で確認しました。

そのプロジェクトでコピーされるdxcompiler.dllのバージョンが古いです。

[プロジェクト]-[プロパティ]-[ビルド イベント]-[ビルド後のイベント]-[コマンドライン]にて、copy文のパスを

$(WindowsSdkDir)Redist\D3D$(PlatformTarget)

から

$(WindowsSdkDir)bin\10.0.26100.0$(PlatformTarget)

に変更してください。(2箇所)

「26100」の部分は、環境の最新のSDKに合わせてください。

投稿2025/03/01 02:59

hiroki-o

総合スコア1323

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

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

YukkeDon

2025/03/01 03:43

動きました!!!!すごい!!!!! このプロジェクトが作られたときはdxcompiler.dllの配置が違っていたのですね… まさかこれだけのことで半日使ってしまっていたとは…C++恐ろしい… でもこれで何とか先に行けそうです!! ありがとうございました!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.32%

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

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

質問する

関連した質問