包含Qt标头时出错

Error when including Qt Headers

本文关键字:出错 Qt 包含      更新时间:2023-10-16

我对Qt很陌生,在构建和链接QMobility库时遇到了一些问题。我没有为此使用qt创建者。这是一个测试示例。cpp:

#include "Qt/qapplication.h"
#include "Qt/qobject.h"
//#include <QtSystemInfo> //
#include "qsysteminfo.h"
int main()
{}

build cmd:

gcc -c test.cpp -L/usr/include/qt4/ -lQtCore -I/usr/include/qt4 -I/usr/include/QtSystemInfo

错误:在test.cpp:4中包含的文件中:/usr/include/QtSystemInfo/qsysteminfo.h:51:致命错误:QObject:没有这样的文件或目录

或者,如果我包括第3行,它现在被注释了,它只会得到一个找不到文件的错误。

我做错了什么?谢谢

您应该包括:#include <QApplication>

如果这不起作用,你可能有一个糟糕的安装。尝试重新安装。

通常创建一个QT项目文件(something.pro(并使用进行编译

qmake && make

在您的终端。你试过了吗?

为什么你想那样伤害自己:-(如果你想利用Qt元对象系统(你也应该使用moc工具(,那么如果不使用qmake,你很难编写要编译的makefile。总之,为了更清楚,我把你的样本改写成这样:

#include <QApplication>
#include <QObject>
#include <QSystemInfo>
int main()
{
   return 0;
}

但是你可以按照你写的那样保存它。为了编译它,我不得不使用以下命令行:

g++ test.cpp -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtCore -I/usr/include/qt4 -I/usr/local/Trolltech/QtMobility-x86-1.1.3/include/QtSystemInfo -I/usr/local/Trolltech/QtMobility-x86-1.1.3/include/QtMobility

当然,您必须根据系统中标头的位置来更改路径。请记住,每个标头都包含其他标头,因此您必须"递归"提供所有必要的包含路径。当然,之后你必须链接这些库。

使用test.pro文件会更简单:

QT      += core gui
CONFIG  += mobility
MOBILITY    += systeminfo
TEMPLATE    = app
TARGET  = test
SOURCES     += test.cpp

这是正确配置的所有必要的包含路径,你将需要和正确的链接到库。您也可以通过这种方式使用C++的所有Qt扩展。

qmake test.pro && make

你就完了。

在一个独立的Visual Studio项目中,我遇到了相同的响应。我有

#include <QtCore>

并将包含路径作为c:Qt4.8.6includeQtCore.

系统文件出现错误:

QtCoreqobject.h : No such file or directory.

我添加了 c:Qt4.8.6include到include路径,问题就消失了。

根据您使用的IDE,您应该能够设置一个"Qt项目"。然后IDE会处理您和其他人试图"手动"解决的问题。CodeBlocks支持Qt项目、MSVisualStudio,我认为还有很多其他IDE。我建议你在谷歌上搜索"<yourIDE> Qt项目启动"。或者考虑使用另一个IDE。但你必须熟悉qmake和。PRO文件在某一点上,我担心。