Visual c++ 未解析的外部符号_IID_IDXGIAdapter4

Visual c++ 未解析的外部符号_IID_IDXGIAdapter4,visual-c++,directx,Visual C++,Directx,真的很奇怪 我认为这个符号\u IID\u IDXGIAdapter4在dxguid.lib中,但是当我使用DUMPBIN命令检查dll中的符号时。有\u IID\u idxgiadapter 1~3,没有\u IID\u idxgiadapter 4 Windows SDK:10.0.18362.0 最奇怪的是我发现了一个DX12教程,使用IDXGIAdapter4,我可以成功编译它,但我的项目不能,甚至我复制了他的项目设置 pDxgiAdapter1->QueryInterface(I

真的很奇怪

我认为这个符号
\u IID\u IDXGIAdapter4
dxguid.lib
中,但是当我使用
DUMPBIN
命令检查dll中的符号时。有
\u IID\u idxgiadapter 1~3
,没有
\u IID\u idxgiadapter 4

Windows SDK:
10.0.18362.0

最奇怪的是我发现了一个DX12教程,使用IDXGIAdapter4,我可以成功编译它,但我的项目不能,甚至我复制了他的项目设置

pDxgiAdapter1->QueryInterface(IID_IDXGIAdapter4, (LPVOID *)p_ppDxgiAdapter4);

在这个项目中,他只使用了
d3d12.lib
dxgi.lib
dxguid.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

这是一个疏忽,在当前的Windows 10 SDK之后的下一个Windows 10 SDK中已修复(即19041仍然存在该漏洞)

缺少DXGUID.LIB:

  • IID\u IDXGIAdapter4
  • IID\u IDXGIOutput6
  • IID\u IDXGIFactory6
  • IID\u IDXGIFactory7
也有报道

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>
#定义INITGUID
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
该bug在dxguid库源代码中使用了
dxgi1_5.h
,但我将其更新为使用
dxgi1_6.h

请注意,Windows Imaging Component(WIC)等大多数“COM”GUI都位于
uuid.lib


更新:dxguid.lib中的此错误已在中修复。

好吧,这就是它被忽略的原因<代码>\uuuUIDOF不需要C链接,因为它是“神奇的编译器元数据”。我们的内部测试使用了
\uuidof
,因此忽略了
dxguid.lib
中缺少它的事实。请记住,
dxguid.lib
是一个方便的辅助工具实用程序,如果需要,您可以自己创建声明。