DirectX 프로젝트에서 미리 컴파일 된 HLSL 쉐이더를로드하는 데 실망한 문제가 있습니다. 저는 Visual Studio 2012 Professional과 DirectX SDK (2010 년 6 월)를 사용하고 있습니다. 아래 코드는 링크 오류 LNK2019 : 해결되지 않은 외부 기호 _D3DReadFileToBlob @ 8이 원인입니다.Visual Studio 2012에서 D3DReadFileToBlob을 호출하면 링크 오류가 발생합니다.
#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은 링커> 입력> 추가 종속성에 설정하고, 적절한하는 디렉토리를 포함 라이브러리 디렉토리는 다이렉트 X SDK 위치를 설정 : $ (IncludePath); $ (DXSDK_DIR) Include 및 $ (LibraryPath); $ (DXSDK_DIR) Lib \ x86)에 있습니다.
코드의이 부분을 제거하면 나머지 프로젝트를 아무런 문제없이 컴파일하고 실행할 수 있습니다 (쉐이더가로드되지 않는다는 명백한 예외가 있음).
나는 뭔가 미묘한 부분을 놓치고 있어야한다고 느낍니다.하지만 검색 및 스택 오버플로를 통해 발견 한 것은이 문제를 해결하는 방법에 대한 통찰력을 얻지 못했습니다.
하지만 Windows 7에서 오류가 발생합니다. Windows 8은 아직 그림에 없습니다. 위치를 연결하고 그 위치를 확인하려고합니다. – kveratis
Windows 8.x SDK는 Windows 7에서 개발하고 Windows Vista 이상 버전의 OS를 대상으로합니다. –