未解决的外部符号_IID_IDXGIFactory

4
我在VC++ 2010中创建了控制台应用程序,并添加了以下代码:
#include #include #include #pragma comment(lib, "d3d10.lib") #pragma comment(lib, "d3dx10.lib") #pragma comment(lib, "dxgi.lib") #pragma comment(lib, "dxerr.lib")
int _tmain(int argc, _TCHAR* argv[]) { IDXGIFactory* pDXGIFactory; CreateDXGIFactory(IID_IDXGIFactory, ( void** )&pDXGIFactory);
return 0; }
构建此项目时,我遇到了链接错误:error LNK2001: unresolved external symbol _IID_IDXGIFactory
现在我创建了带有MFC支持的控制台应用程序,并添加了相同的代码。该构建成功了。第一种情况出了什么问题?为什么MFC项目可以成功构建,而非MFC项目失败呢?
2个回答

9

您需要引用另一个库,该库拥有此标识符:

#pragma comment(lib, "windowscodecs.lib")

MSDN声称它是DXGI.lib,但实际上至少在Windows SDK 7.0中它在另一个库中。


1
不同之处在于dxguid.lib是DirectX SDK库(而不是Windows SDK),据MSDN称,该符号已经在“核心”Windows SDK中了。 - Roman R.
windowscodecs.lib确实有帮助,但并没有解决所有错误。因此,像Alex说的那样同时包括它和dxguid.lib是必要的。谢谢! - leetNightshade
1
IID_ID3D11DeviceIID_ID3D11DeviceContext 也可以在 dxguid.lib 中找到,而非 MSDN 指定的 D3D11.lib - SMUsamaShah

3

我曾经遇到同样的问题,而在我的情况下,引用#pragma comment(lib, "dxgi.lib")解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接