未解析的外部符号 _IID_IDXGIFactory

Posted

技术标签:

【中文标题】未解析的外部符号 _IID_IDXGIFactory【英文标题】:Unresolved external symbol _IID_IDXGIFactory 【发布时间】:2012-04-12 06:32:54 【问题描述】:

我在 VC++ 2010 中创建控制台应用程序,并在其中添加以下代码:

#include #include #include #pragma 注释(lib,“d3d10.lib”) #pragma 注释(lib,“d3dx10.lib”) #pragma 注释(lib,“dxgi.lib”) #pragma 注释(lib,“dxerr.lib”) int _tmain(int argc, _TCHAR* argv[]) IDXGIFactory* pDXGIFactory; CreateDXGIFactory(IID_IDXGIFactory, ( void** )&pDXGIFactory); 返回0;

构建这个项目,我有链接器错误:error LNK2001: unresolved external symbol _IID_IDXGIFactory

现在我创建支持 MFC 的控制台应用程序,并添加相同的代码。构建成功。第一种情况有什么问题?为什么MFC项目建成功,非MFC项目建失败?

【问题讨论】:

【参考方案1】:

您需要引用另一个包含此标识符的库:

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

MSDN says its DXGI.lib 但实际上至少 Windows SDK 7.0 将它放在不同的库中。

【讨论】:

不同之处在于dxguid.lib 是 DirectX SDK 库(相对于 Windows SDK),并且根据 MSDN,该符号已经在“核心”Windows SDK 中。 windowscodecs.lib 确实有帮助,但并没有解决我所有的错误。所以,就像亚历克斯所说的那样,包括那个和 dxguid.lib 就是它所需要的。谢谢! IID_ID3D11DeviceIID_ID3D11DeviceContext 也在 dxguid.lib 中找到,而不是在 MSDN 中指定的 D3D11.lib【参考方案2】:

我遇到了同样的问题,在我的案例中引用 #pragma comment(lib, "dxgi.lib") 解决了这个问题。

【讨论】:

以上是关于未解析的外部符号 _IID_IDXGIFactory的主要内容,如果未能解决你的问题,请参考以下文章

LNK2019:未解析的外部符号 _main 在函数 ___tmainCRTStartup 中引用

未解析的外部符号_stricoll

如何修复 MSVC 2005 错误:未解析的外部符号 __environ

函数中引用的未解析的外部符号 _wcstok

vc ++ MFC应用程序,错误LNK2019:未解析的外部符号

未解析的外部符号 _IID_IDXGIFactory