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
是一个方便的辅助工具实用程序,如果需要,您可以自己创建声明。