QT命令行开发环境搭建的几个问题以及处理
刚学QT,看了丁林松老师的视频《丁林松QT系列教程:1.手工布局》,自己动手写了代码,在命令行编译和运行程序中发现有几个问题,这边把处理方法记录下来。
这里的问题只是针对命令行下编译Qt程序出现的,在QtCreator下运行基本不会有以下问题,大神可以无视。
备注:
我开发环境如下:
操作系统——Win8 64位
VisualStudio——VS2013
QtCreator——3.1.2
Qt——5.3.1
示例程序:
#include <QApplication>
#include <QPushButton>
#include <QLineEdit>
#include <QHBoxLayout>
#include <QWidget>
#include <QLabel>
int main(int argc,char** argv)
{
QApplication app(argc,argv);
QLabel *infoLabel = new QLabel;
QLabel *cmdLabel = new QLabel;
QLineEdit *cmdLineEdit = new QLineEdit;
QPushButton *submitButton = new QPushButton;
QPushButton *cancelButton = new QPushButton;
QPushButton *browseButton = new QPushButton;
infoLabel->setText("Please input command");
cmdLabel->setText("Open:");
cmdLineEdit->clear();
submitButton->setText("Submit");
cancelButton->setText("Cancel");
browseButton->setText("Browse");
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(submitButton);
buttonLayout->addWidget(cancelButton);
buttonLayout->addWidget(browseButton);
QHBoxLayout *cmdLayout = new QHBoxLayout;
cmdLayout->addWidget(cmdLabel);
cmdLayout->addWidget(cmdLineEdit);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(infoLabel);
mainLayout->addLayout(cmdLayout);
mainLayout->addLayout(buttonLayout);
QWidget *window = new QWidget;
window->setLayout(mainLayout);
window->setWindowTitle("cmd");
window->show();
return app.exec();
}
编译、执行过程:
qmake -project
qmake
Nmake
问题1.
程序写完,在命令行执行qmake -project(生成QT工程文件),提示“'qmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。”如下图:
处理方法:
qmake路径(QT安装目录\Qt5.3.1\5.3\msvc2013\bin)添加到环境变量Path,或者用开始菜单QtCreator提供的命令行Qt 5.3 32-bit for Desktop(MSVC 2013)执行qmake -project.
问题2
执行nmake提示“'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件”。如下图:
处理方法如下:
运行VS2013安装路径vc目录下的vcvarsall.bat(可以手工把这个文件拖到命令行执行)。这里不能直接把nmake加入到环境变量,否则还会提示“gdi32.lib”等找不到。所以还是运行vcvarsall.bat比较保险。
问题3
编译程序,提示“fatal error C1083: 无法打开包括文件: “QApplication”: No such file or directory”。如下图:
解决方法如下:
在工程文件(.pro)中加入一行QT += widgets。或者把#include <QApplication>改为#include <QtWidgets/QApplication>。显然前者比较方便。
问题4
执行nmake编译过程中出现大量“无法解析的外部符号”,也就是大量QT库找不到。
解决方法如下:
nmake之前把QT库加入LIB中。执行“LIB /LIBPATH:D:\QtInstall\Qt5.3.1\5.3\msvc2013\lib”,其中D:\QtInstall为QT安装路径。
问题5
编译成功执行.exe程序出现Qt5Widgets.dll等好几个DLL找不到。
解决方法如下:
拷贝QT安装目录\Qt5.3.1\5.3\msvc2013\bin下面对应的DLL到程序.exe所在路径,或者把QT安装目录\Qt5.3.1\5.3\msvc2013\bin加入到环境变量后,右键“以管理员身份运行”。成功执行。如下图
问题6
执行程序的时候有如下错误“This application failed to start because it could not find or load the Qt platform plugin “windows” ”
解决方法如下:
将QT安装目录\Qt5.3.1\5.3\msvc2013\bin\libEGL.dll和QT安装目录\Qt5.3.1\5.3\msvc2013\plugins\platforms\qwindows.dll放入到可执行程序(.exe)处。