在windows命令行编译Qt程序并纠错

简介: 在windows命令行编译Qt程序并纠错

00、编译环境

VS2017
QT5.9.4

01、在电脑任意位置新建HelloWorld目录,里面编写HelloWorld.cpp代码,代码如下

#include <QApplication>
#include <QLabel>
int main(int argc, char **argv)
{
    QApplication app(argc, argv);// 构建一个qt应用程序对象
    QLabel       label("HelloWorld!");// 构建一个标签
    label.setAlignment(Qt::AlignCenter);
    label.resize(400, 300);
    label.show();
    return app.exec();// 让程序进入事件循环
}

02、打开vs2017的命令行

2018122814580746.png

03、qmake -project,生成pro文件

  • 在命令行中切换到HelloWorld.cpp所在目录下,执行命令:
qmake -project

2018122814580746.png

在HelloWorld目录下就自动生成了HelloWorld.pro文件

2018122814580746.png

用文本编译器打开HelloWorld.pro文件,并且在文件开头加入 QT+=widgets ,因为代码里的 QApplication 和 QLabel 两个类是属于widgets模块

2018122814580746.png

注意:可以直接使用命令qmake -project QT+=widget使生成的pro文件带有QT+=widgets

04、qmake,生成Makefile

在命令行中继续执行qmake命令,生成 Makefile 以及其他文件:

2018122814580746.png

05、nmake,生成可执行程序

  • 在命令行中继续执行命令编译 :
nmake

出现关于qalgorithms.h的错误

..\Qt5.9.4\5.9.4\msvc2017_64\include\QtCore/qalgorithms.h(847): error C3615: constexpr 函数 "qCountLeadingZeroBits" 不会生成常数表达式
..\Qt5.9.4\5.9.4\msvc2017_64\include\QtCore/qalgorithms.h(858): note: 对未定义的函数或为未声明为“constexpr”的函数的调用导致了故障
..\Qt5.9.4\5.9.4\msvc2017_64\include\QtCore/qalgorithms.h(858): note: 请参见“qPopulationCount”的用法

2018122814580746.png

这是使用MSVC2017编译器的一个bug,Qt社区已经解决了,下载官方提供的qalgorithms.h替换即可

问题描述与解决方法:https://codereview.qt-project.org/c/qt/qtbase/+/236948

替换后继续执行 nmake,出现下列错误

Qt5Widgets.lib(Qt5Widgets.dll) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\HostX64\x86\link.EXE"”: 返回代码“0x458”
Stop.
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe"”: 返回代码“0x2”
Stop.

2018122814580746.png

错误原因:当前命令行窗口没有同时兼容x64和x86

解决办法:重新打开“适用于 VS2017 的x86_x64兼容工具命令”窗口,再编译则在realease目录生成可执行程序

2018122814580746.png

执行下面命令重新编译,在realease目录生成了HelloWorld.exe

nmake clean
nmake

06、运行

进入realease目录双击HelloWorld.exe,则弹出如下窗口

2018122814580746.png

目录
相关文章
|
2天前
|
Java Linux Windows
windows实现自动部署jar包运行程序
windows实现自动部署jar包运行程序
11 0
|
23天前
|
PHP Windows
|
27天前
|
C++
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
20 0
|
30天前
|
编译器
QT creator开发环境下 界面更改后运行程序不能实时更新或者在源文件添加该控件后无法编译的问题
在使用QT Creator开发界面的过程中,偶尔会出现添加控件后,运行程序后,界面控件无法更新的情况,或者在源文件使用该控件却出现无法编译的情况,使用QT Creator 4.8.2也会出现这个情况,也不知道这种情况会不会在以后有所改善。
17 0
|
1月前
Mac系统下Qt程序图标设置方法
Mac系统下Qt程序图标设置方法
11 0
|
1月前
|
Windows Python
windows下jupyter中使用qt5演示动图
windows下jupyter中使用qt5演示动图
|
1月前
|
区块链
Qt程序发布(修改软件图标、版本号、打包)
Qt程序发布(修改软件图标、版本号、打包)
|
2月前
|
Shell 数据安全/隐私保护 Windows
Windows Server【开机启动和任务计划程序】实现服务器重启后项目自启动(Windows Server 任务计划程序无法执行问题处理)
Windows Server【开机启动和任务计划程序】实现服务器重启后项目自启动(Windows Server 任务计划程序无法执行问题处理)
93 0
|
2月前
|
数据可视化 Linux UED
QT基础教程(GUI程序原理分析)
QT基础教程(GUI程序原理分析)
30 0
|
2月前
|
移动开发
【实用】一组原创原生样式的基础控件、UI组件样式(偏向移动端H5页面的样式)
【实用】一组原创原生样式的基础控件、UI组件样式(偏向移动端H5页面的样式)
【实用】一组原创原生样式的基础控件、UI组件样式(偏向移动端H5页面的样式)

相关产品

  • 云迁移中心
  • 推荐镜像

    更多