2012-01-24 143 views
35

我已经安装了C++ SDK有Qt的,但是当我尝试编译链接的QApplication代码它给我的错误:错误的QApplication:没有这样的文件或目录

Error QApplication: no such file or directory 

如何链接这些库?我搜索了目录,并且有一个名为QApplication.h的文件;所以我试图用-I(链接目录)链接它,但它仍然给我那个错误。

+0

'它给了我那个错误'。什么错误?张贴正确的错误输出。在您提供完整信息之前,没有人可以为您提供帮助。 –

+7

这个question.The源的标题是一个简单的文件,我想我没必要张贴此只是简单:http://pastebin.com/972XtFUz –

+0

是什么的输出'$定位QApplication'? –

回答

40

要开始工作,错误QApplication: no such file or directory意味着您的编译器无法找到此标头。这与您在问题中提到的链接过程无关。

-I标志(大写)用于指定的包括(头)目录(这是你需要做什么),而-L标志用于指定库目录。-l标志(小写字母L)用于将您的应用程序与指定的库链接。

但是你可以使用Qt来你的优势:Qt拥有一个名为QMAKE构建系统,这使得事情变得更加容易。例如,当我想编译main.cpp我创建了一个main.pro文件。为了教育目的,我们假设这个源代码是一个简单的项目,它只使用QApplicationQDeclarativeView。适当的的.pro文件将是:

TEMPLATE += app 
QT += gui declarative 
SOURCES += main.cpp 

然后,执行qmake该目录内创建将用于编译应用程序的Makefile文件,最后执行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

+14

在Qt 5.x之后,您需要将'QT + = widgets'添加到**。pro **文件中。 – karlphillip

11

看起来你没有安装开发库。使用安装:

sudo apt-get install libqt4-dev 

正如你INT您安装了该评论说,只是重新安装。现在。更新定位的数据库,发出这个命令$sudo updatedb

然后$locate QApplication检查你现在已经安装了头文件。

现在,转到这个地方你的代码&键入以下命令

qmake -project 
qmake 
make 

后,可以看到创建的二进制文件的文件夹。

或者,如果您需要GUI,则可以使用Qt Creator。

+0

如果我-project壳冻结几秒钟型QMAKE,我必须与ctrl + c分开。 –

+0

在cmdline中键入'$ qmake -project -d -Wall'并告诉它挂起的位置。另外,你是否尝试QtCreator? –

+0

ramy @ ubuntu:〜/ Documents/C++/Prova $ $ qmake -project -d -Wall 找不到命令'-project',你的意思是: 命令'project'从package'turnin-ng'(universe) - 项目:找不到命令 –

0

我建议您更新SDK,并开始新的项目,并重新编译你拥有的一切。看起来你有一些内部程序错误。或者你缺少包装。

而且这是阿卜迪耶克说的。

+0

我不明白为什么你有问题,如果你已经安装了软件包,你使用的是什么SDK和NDK?以及你有什么开发工具? QT创造者? QT必需品? – Denonth

4

请确保您使用的qmake版本与您要使用的QT版本相对应。

可以肯定的,你可以运行:

$qmake -v 

你的问题似乎是QT 3和4之间的版本冲突的征兆,因为在这里可以看到:

http://lists.trolltech.com/qt4-preview-feedback/2005-11/thread00013-0.html

要解决这个问题,您可以删除旧的QT安装,或者在您的Makefile中特别指向qmake-qt4。

+0

+1显示如何测试版本,以及提供更多信息的链接。 –

74

在Qt 5,你现在必须添加widgetsQT QMAKE变量:

QT += widgets 
+0

你能指定吗? – 4pie0

+1

不知道你要我指定... – Timmmm

+0

这里是我如何解决这个问题:[链接](http://stackoverflow.com/a/15120378/1141471) – 4pie0

2

QT5你应该使用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 
23

对于QT 5

第一步: .pro(在亲文件,添加这些2行)

QT  += core gui 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

第二步:main.cpp替换代码:

#include <QtGui/QApplication> 

有:

#include <QApplication> 
1

,你必须在.pro文件中添加QT + =部件在第一次执行之前,如果你加入这一行的不是要去工作之前执行,所以哟需要启动文件的创建从一开始就。

0

您可以更改构建versiyon.例如,我试过QT 5.6.1,但它没有工作。但我试过QT 5.7.0。所以它的工作,祝你好运! :)

相关问题