在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

目录
相关文章
|
29天前
|
监控 编译器 Windows
Qt5实现Windows平台串口通信
Qt5实现Windows平台串口通信
|
27天前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
98 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
3月前
|
Ubuntu Linux Windows
如何在Ubuntu系统中安装Wine,借此来运行Windows程序
熟悉的登录画面出现,在Ubuntu系统中扫描登录微信程序。
|
3月前
|
Unix Linux 编译器
解决在Windows平台上运行Golang程序时出现的syscall.SIGUSR1未定义错误。
通过这种结构,你的代码既可以在支持 SIGUSR1 信号的系统上正常工作,又可以在不支持这些信号的 Windows 系统上编译通过,确保跨平台的兼容性和功能的完整性。
159 0
|
4月前
|
Windows
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
134 2
|
5月前
|
Windows
Windows下版本控制器(SVN)-启动服务器端程序
Windows下版本控制器(SVN)-启动服务器端程序
166 4
|
6月前
|
安全 Devops 测试技术
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
131 0
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
|
9月前
|
安全 JavaScript Java
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
144 12
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
|
8月前
|
Windows
Windows程序的数字签名证书怎么申请
Windows程序的数字签名证书申请流程包括:准备企业资料(营业执照、税务登记证等),提交申请表及企业资料。经过初审、实名认证和二审后,等待1-5个工作日审核结果。审核通过后,CA机构颁发证书并通过邮件或邮寄方式发送。收到证书后按指南安装并使用签名工具对程序进行数字签名,确保软件完整性和可信度。注意证书有效期、管理和兼容性问题。
|
8月前
|
自然语言处理 安全 测试技术
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
507 0
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试

推荐镜像

更多
  • qt