我已经安装了具有 Qt 的 C + + SDK,但是当我尝试编译一个链接 QApplication 的代码时,它给了我一个错误:
Error QApplication: no such file or directory
如何链接这些库?我在目录中搜索,发现有一个名为 QApplication.h 的文件; 所以我试图将它链接到-I (链接目录) ,但它仍然给我出现了这个错误。
似乎您没有安装开发库。请使用以下方法安装它们:
sudo apt-get install libqt4-dev
正如您在注释中所说,您已经安装了它们,只需要重新安装它。现在。要更新位置的数据库,请发出以下命令 $sudo updatedb
$sudo updatedb
然后 $locate QApplication检查您现在已经安装了头文件。
$locate QApplication
现在,进入代码所在的文件夹并键入这些命令
qmake -project qmake make
然后您可以找到创建的二进制文件。
或者,如果需要 GUI,可以使用 Qt Creator。
有关更多信息,请参见官方文档
要学习如何使用 Qt Creator,请使用 http://doc.qt.nokia.com/qtcreator-2.2/creator-qml-application.html
我建议你更新你的 SDK,开始新的项目,重新编译你所拥有的一切。看来你有一些内部程序错误。不然你就是丢了包裹。
按 Abdijeek 说的做。
请确保您正在使用的 qmake 版本与您想要使用的 QT 版本相对应。
可以肯定的是,你可以直接跑:
$qmake -v
你的问题似乎是 QT 3和4之间版本冲突的症状,如下图所示:
Http://lists.trolltech.com/qt4-preview-feedback/2005-11/thread00013-0.html
为了解决这个问题,您可以删除旧的 QT 安装,或者在 Makefile 中特别指向 qmake-qt4。
首先,错误 QApplication: no such file or directory意味着您的编译器无法找到这个头。它与您在问题中提到的链接过程无关。
QApplication: no such file or directory
-I标志(大写的 我)用于指定 include (headers)目录(这是您需要做的) ,而 -L标志用于指定库目录。-l标志(小写 L)用于将应用程序链接到指定的库。
-I
-L
-l
但是您可以使用 利用 Qt: Qt 有一个名为 Qmake的构建系统,这使事情变得更简单。例如,当我想编译 Main.cpp时,我创建一个 主要的,专业的文件。出于教育目的,我们假设这个源代码是一个只使用 QApplication和 QDeclarativeView的简单项目。适当的 。亲文件应该是:
QApplication
QDeclarativeView
TEMPLATE += app QT += gui declarative SOURCES += main.cpp
然后,执行该目录中的 qmake以创建将用于编译应用程序的 Makefile,最后执行 make以完成该任务。
qmake
make
在我的系统中,make输出:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/qt_47x/mkspecs/linux-g++ -I. -I/opt/qt_47x/include/QtCore -I/opt/qt_47x/include/QtGui -I/opt/qt_47x/include/QtDeclarative -I/opt/qt_47x/include -I/usr/X11R6/include -I. -o main.o main.cpp g++ -Wl,-O1 -Wl,-rpath,/opt/qt_47x/lib -o main main.o -L/opt/qt_47x/lib -L/usr/X11R6/lib -lQtDeclarative -L/opt/qt_47x/lib -lQtScript -lQtSvg -L/usr/X11R6/lib -lQtSql -lQtXmlPatterns -lQtNetwork -lQtGui -lQtCore -lpthread
注意: 我在另一个目录中安装了 Qt —— > /opt/qt_47x
/opt/qt_47x
编辑: Qt 5.x 及更高版本
将 QT += widgets添加到. pro 文件并解决此问题。
QT += widgets
确保在路径中有 qmake (其中 qmake) ,并且它可以工作(qmake-v) (如果必须用 ctr-c 杀死它,那么环境就有问题)。
然后按照这个: http://developer.qt.nokia.com/doc/qt-4.8/gettingstartedqt.html
在 Qt 5中,现在必须将 widgets添加到 QT qmake 变量(在 MyProject.pro文件中)。
widgets
QT
MyProject.pro
在 Qt5中你应该使用 QtWidgets而不是 QtGui
QtWidgets
QtGui
#include <QtGui/QComboBox> // incorrect in QT5 #include <QtWidgets/QComboBox> // correct in QT5
或者
#include <QtGui/QStringListModel> // incorrect in QT5 #include <QtCore/QStringListModel> // correct in QT5
为了 QT 5
第一步: .pro(在专业文件中,添加这两行)
.pro
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
第二步: 在 main.cpp中替换代码:
main.cpp
#include <QtGui/QApplication>
与:
#include <QApplication>
中添加 QT + = 小部件。Pro 文件在第一次执行之前,如果你在添加这一行之前执行,它不会工作,所以你需要从一开始就开始创建文件。
您可以更改构建版本。例如,我尝试 QT 5.6.1,但它不工作。比我试过的 QT 5.7.0还多。所以成功了,祝你好运!:)
嗯,现在说这个有点晚了,但是我刚刚开始学习 Qt,也许这个可以帮助一些人:
如果您正在使用 Qt Creator,那么当您开始创建项目时,您被要求选择一个与您的项目一起使用的工具包,让我们假设您选择了 Desktop Qt <version-here> MinGW 64-bit。对于 Qt 5,如果你打开安装的 Qt 文件夹,你会发现一个安装了 Qt 版本作为其名称的文件夹,在这里你可以找到你可以选择的工具包。
Desktop Qt <version-here> MinGW 64-bit
你可以转到 /PATH/FOR/Qt/mingw<version>_64/include,在这里你会发现所有的包括,你可以在你的程序中使用,只要搜索 QApplication,你会发现它在文件夹 QtWidgets,所以你可以使用 #include <QtWidgets/QApplication>,因为路径开始从 include文件夹。
/PATH/FOR/Qt/mingw<version>_64/include
#include <QtWidgets/QApplication>
include
对于其他头,如果遇到其他工具包,也是如此。
注意: “所有你可以使用的包括”并不意味着这些是你唯一可以使用的,例如,如果你包含 iostream,那么编译器将包含它从 /PATH/FOR/Qt/Tools/mingw<version>_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/iostream
iostream
/PATH/FOR/Qt/Tools/mingw<version>_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/iostream
# 包括 # 包括
# include“ ui _ mainwindow. h”< strong > Error here ...
我有办法: 我使用 KDevelopment,File- > Open. .-> build- > build-> (ui _ mainwindow.h 上的循环)-> Open
瞧!
正在使用 QT 6
我发现问题在于如何设置版本
我已经设置了一个版本大于6意味着版本7及以上,但我使用 QT 版本6 所以我改变了
greaterThan(QT_MAJOR_VERSION, 6) : QT += widgets
敬
greaterThan(QT_MAJOR_VERSION, 5) : QT += widgets
CONFIG + = c + + 11
在 myproject.pro 上编写以上代码
我用的是 linuxmint20.0