You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:10:44