包含Qt标头时出错
Error when including Qt Headers
我对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文件在某一点上,我担心。
- 从 ParaView 构建自定义 Qt 应用程序示例时出错
- 使用 qt 进行 SSL 握手期间出错
- 从 Qt(release) 生成的文件执行.EXE文件时出错
- 在 Qt 中将 x 可执行文件作为按钮事件运行时出错
- 交叉编译 qt:加载共享库时出错
- 打开终端时出错:MacOs 10.12.4 上的 Qt Creator 未知
- 使用 PostgreSQL 编译静态 Qt 5.10.0 时出错
- 尝试从 Github 编译 OpenCV QT 代码时出错
- 使用 Qt (Ubuntu 14.04) 编译 qt-dab 时出错
- 使用由 Mingw 5.3 编译的 boost ASIO 库使用 QT 时出错
- 使用 Qt 创建器时出错:"multiple definition" "first defined here"
- 尝试使用共享库部署QT应用程序时出错
- 将 TagLib 链接到 Qt 时出错
- 为什么我在使用 Qt creator 用 C 编译代码时出错,但可以使用 make 文件轻松做到这一点
- 在 Qt 中使用 for 与 OpenCV3 时出错
- 使用 Qt 标头的递归包含时出错
- std::stoul 在带有 NDK r13b 的 Android 版 Qt 应用程序上出错
- LNK1104将Boost库添加到Qt项目时出错
- 尝试在Qt中运行应用程序时出错
- 仅在从命令行构建Qt项目时出错