DirectX プロジェクトでコンパイル済みの HLSL シェーダーをロードする際に、イライラする問題が発生しています。Visual Studio 2012 Professional と DirectX SDK (2010 年 6 月) を使用しています。以下のコードは、LNK2019: unresolved external symbol _D3DReadFileToBlob@8 のリンク エラーを引き起こしています。
#include "GameBase.h"
#include<D3Dcompiler.h>
bool GameBase::LoadShaderFromFile(LPCWSTR filePath, ID3DBlob** buffer)
{
HRESULT result = D3DReadFileToBlob(filePath, buffer);
if(FAILED(result))
{
return false;
}
return true;
}
ライブラリ d3d11.lib;d3dx11.lib;dxerr.lib;D3dcompiler.lib は [リンカー] > [入力] > [追加の依存関係] で設定され、DirectX SDK の場所に適切なインクルード ディレクトリとライブラリ ディレクトリが設定されます: $(IncludePath);$ (DXSDK_DIR)Include、および $(LibraryPath);$(DXSDK_DIR)Lib\x86) をそれぞれ。
コードのこの部分を削除すると、プロジェクトの残りの部分を問題なくコンパイルして実行できます (ただし、シェーダーが読み込まれないという明らかな例外があります)。
何か微妙なものが欠けているに違いないと感じていますが、検索やスタックオーバーフローで見つけたものは何もありません。この問題を解決する方法についての洞察は得られませんでした。