未解析的外部符号 _IID_IDXGIAdapter4
unresolved external symbol _IID_IDXGIAdapter4
真是奇怪....
我认为这个符号_IID_IDXGIAdapter4
在dxguid.lib
,但是当我使用DUMPBIN
命令检查dll里面的符号时。有_IID_IDXGIAdapter1~3
,没有_IID_IDXGIAdapter4
.
Windows 开发工具包: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
,我已经把它们放到项目设置中了。
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 中得到修复(即 19041 仍然存在错误)。
DXGUID.LIB 丢失:
IID_IDXGIAdapter4
IID_IDXGIOutput6
IID_IDXGIFactory6
IID_IDXGIFactory7
It was reported on GitHub as well.
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>
The bug was using dxgi1_5.h
in the dxguid library source, but I updated it to use dxgi1_6.h
.
请注意,Windows 成像组件 (WIC) 等大多数“COM”GUID 都在 uuid.lib
。
更新:dxguid.lib
中的这个错误已在 Windows 10 SDK (20348), version 2104 中修复。
真是奇怪....
我认为这个符号_IID_IDXGIAdapter4
在dxguid.lib
,但是当我使用DUMPBIN
命令检查dll里面的符号时。有_IID_IDXGIAdapter1~3
,没有_IID_IDXGIAdapter4
.
Windows 开发工具包: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
,我已经把它们放到项目设置中了。
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 中得到修复(即 19041 仍然存在错误)。
DXGUID.LIB 丢失:
IID_IDXGIAdapter4
IID_IDXGIOutput6
IID_IDXGIFactory6
IID_IDXGIFactory7
It was reported on GitHub as well.
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>
The bug was using
dxgi1_5.h
in the dxguid library source, but I updated it to usedxgi1_6.h
.
请注意,Windows 成像组件 (WIC) 等大多数“COM”GUID 都在 uuid.lib
。
更新:dxguid.lib
中的这个错误已在 Windows 10 SDK (20348), version 2104 中修复。