Qt简易应用链接Windows user32库编译失败求助
解决Qt + MSVC2017下ChangeDisplaySettingsW链接错误
你遇到的LNK2019错误本质是MSVC编译器不识别MinGW风格的库链接参数,-luser32是GCC/MinGW的写法,在MSVC环境下需要换成对应格式,以下是几种可行的解决方案:
方案1:在代码中直接指定链接库
在你的mainwindow.cpp开头添加MSVC专属的库链接指令:
#include "mainwindow.h" #include "ui_mainwindow.h" #pragma comment(lib, "user32.lib") // 新增这一行 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { // ... 原有代码 }
#pragma comment(lib, "xxx.lib")是MSVC的编译器指令,会告诉链接器自动链接指定的导入库,这种写法不需要修改.pro文件,直接生效。
方案2:修改.pro文件适配MSVC
将.pro文件中原来的LIBS += -luser32替换为MSVC兼容的写法:
# 替换原来的LIBS += -luser32 win32-msvc* { LIBS += user32.lib }
win32-msvc*是qmake的条件判断,只会在MSVC编译器下生效,确保跨编译器兼容性;如果你的项目只针对MSVC,也可以直接写LIBS += user32.lib(MSVC不需要-l前缀)。
后续验证步骤
修改完成后,记得:
- 执行Qt Creator的清理项目(Build -> Clean All)
- 重新运行qmake(Build -> Run qmake)
- 再重新构建项目(Build -> Build All)
这样能确保qmake生成新的Makefile,让链接参数生效。
补充说明
__imp_ChangeDisplaySettingsW是MSVC导入库的符号命名规则,出现这个错误说明链接器找不到user32.lib中的该符号,而MinGW的链接参数格式在MSVC下不被识别,所以换成上述两种MSVC兼容的写法就能解决问题。
内容的提问来源于stack exchange,提问作者aarelovich
相关产品推荐
相关产品推荐

