VS2022编译项目遇LNK2019错误:未解析外部符号CreateDXGIFactory
解决LNK2019:CreateDXGIFactory外部符号未解析问题
编译VS2022项目时出现LNK2019错误,提示main函数中引用的外部符号CreateDXGIFactory未解析,即便已包含Win10 SDK且能获取内联提示,核心原因是未链接DXGI的库文件。
解决方案
CreateDXGIFactory的实现位于dxgi.lib中,必须显式将该库引入项目,有两种方式:
- 代码内添加编译指令:在头文件包含部分添加库链接指令,修改后的代码如下:
#include <iostream> #include <dxgi.h> #include <dxgi1_2.h> #include <dxgi1_3.h> #include <dxgi1_4.h> #include <dxgi1_5.h> #include <dxgi1_6.h> #include <dxgicommon.h> #include <dxgidebug.h> #include <dxgiformat.h> #pragma comment(lib, "dxgi.lib") // 添加这一行链接dxgi库 int main() { UINT i = 0, j = 0, k=0; IDXGIFactory* pFactory = nullptr; IDXGIAdapter* pAdapter; IDXGIOutput* pOutput; if (CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&pFactory)) == S_OK) { while (pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND) { while (pAdapter->EnumOutputs(j, &pOutput) != DXGI_ERROR_NOT_FOUND) { ++j,k; pOutput->Release(); } j = 0; ++i; pAdapter->Release(); } std::cout << j << std::endl; pFactory->Release(); } else { std::cout << "Err creating dxgi factory" << std::endl; } return 0; }
- 通过VS项目设置添加:右键项目 → 属性 → 配置属性 → 链接器 → 输入 → 附加依赖项,在输入框中添加
dxgi.lib,点击确定保存设置后重新编译。
说明
头文件仅提供CreateDXGIFactory的函数声明,实际函数实现存在于dxgi.lib库文件中。编译器在编译阶段能通过头文件识别函数,但链接阶段需要找到对应库的实现才能完成最终的可执行文件生成,因此必须显式链接该库。
内容的提问来源于stack exchange,提问作者luckyGryfindor
相关产品推荐
相关产品推荐

