问题描述
这真的很奇怪。...
我认为_IID_IdxgiAdapter4
中的这个符号dxguid.lib
,但是当我使用DUMPBIN
命令检查dll中的符号时。有_IID_IdxgiAdapter1~3
,没有_IID_IdxgiAdapter4
。
Windows SDK:10.0.18362.0
最奇怪的是,我发现了一个使用IdxgiAdapter4的DX12教程,我可以成功编译它,但是即使复制他的项目设置,我的项目也无法完成。
https://github.com/jpvanoosten/LearningDirectX12/blob/v0.0.1/Tutorial1/src/main.cpp
在这个项目中,他仅使用d3d12.lib
,dxgi.lib
和dxguid.lib
,而我已经将它们放入项目设置中。
解决方法
这是一个疏忽,已在当前版本之后的下一个Windows 10 SDK中修复(即19041仍然存在该错误)。
DXGUID.LIB丢失:
-
IID_IDXGIAdapter4
-
IID_IDXGIOutput6
-
IID_IDXGIFactory6
-
IID_IDXGIFactory7
在GitHub上也有报道。
dxguid.lib
没什么特别的。就是这样的代码:
#define INITGUID
#include <Windows.h>
#include <d3dcommon.h>
#include <dxgi1_5.h>
#include <dxgidebug.h>
#include <d3d11_4.h>
#include <d3d11shader.h>
#include <d3d11sdklayers.h>
#include <d3dcompiler.h>
#include <d3d12.h>
#include <d3d12video.h>
#include <d3d12shader.h>
#include <d3d12sdklayers.h>
该错误是在dxguid库源文件中使用
dxgi1_5.h
,但我将其更新为使用dxgi1_6.h
。
请注意,大多数“ COM” GUID(例如Windows Imaging Component(WIC)的GUID)都位于uuid.lib
中。
pDxgiAdapter1->QueryInterface(IID_IDXGIAdapter4,(LPVOID *)p_ppDxgiAdapter4);
更改为
pDxgiAdapter1->QueryInterface(__uuidof(IDXGIAdapter4),(LPVOID *)p_ppDxgiAdapter4);
解决我的问题
但在dxgi1_6.h
DEFINE_GUID(IID_IDXGIAdapter4,0x3c8d99d1,0x4fbf,0x4181,0xa8,0x2c,0xaf,0x66,0xbf,0x7b,0xd2,0x4e);
我仍然无法使用IID_IDXGIAdapter4
。