【问题标题】:Error when including Qt Headers包含 Qt 标头时出错
【发布时间】:2011-07-06 13:23:28
【问题描述】:

我对 Qt 很陌生,在构建和链接 QMobility 库时遇到了一些麻烦。我没有为此使用 qt creator。这是一个示例 test.cpp:

#include "Qt/qapplication.h"
#include "Qt/qobject.h"
//#include <QtSystemInfo> //
#include "qsysteminfo.h"

int main()
{}

编译命令:

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 行,它只会得到一个文件未找到错误。

我做错了什么?谢谢。

【问题讨论】:

  • 嗯...不确定,但你不必使用 Q 预处理器 -- 试试qmake
  • 没有。如上所示,我可以包含 Qt/qapplication.h。当我使用 qmobility 库并包含 qsysteminfo.h 时,问题就开始了。
  • @glutz:“如上所示,我可以包含 Qt/qapplication.h。”您能够做到这一点并不意味着这样做是有效的。 “qapplication.h”是 QT 的内部头文件。您必须包含 并且您必须像 Alex 所说的那样将 qmake 实用程序与您的项目文件一起使用 - 这将添加所有必要的包含目录和库。就像 QT 文档说的那样。

标签: c++ qt


【解决方案1】:

您应该包括:#include &lt;QApplication&gt;

如果这不起作用,则可能是安装错误。尝试重新安装。

【讨论】:

    【解决方案2】:

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

    qmake && make
    

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

    【讨论】:

      【解决方案3】:

      你为什么要那样伤害自己 :-) 如果你想利用 Qt 元对象系统(你应该使用 moc 工具作为好吧)。无论如何,为了更清楚起见,我这样重写了您的示例:

      #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
      

      并且已正确配置了您需要的所有必要包含路径并正确链接到库。您也可以通过这种方式使用所有 Qt 对 C++ 的扩展。

      qmake test.pro && make
      

      你就完成了。

      【讨论】:

        【解决方案4】:

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

        #include &lt;QtCore&gt;

        和包含路径为 c:\Qt\4.8.6\include\QtCore.

        系统文件有错误:

        QtCore\qobject.h : No such file or directory.

        我添加了 c:\Qt\4.8.6\include 到包含路径,问题就消失了。

        【讨论】:

          【解决方案5】:

          根据您使用的 IDE,您应该能够设置“Qt 项目”。然后 IDE 会处理您和这里的其他人尝试“手动”解决的问题。 CodeBlocks 支持 Qt 项目、MS Visual Studio,我认为还有很多其他的 IDE。我建议你谷歌“&lt;yourIDE&gt;Qt-project getting started”。或者考虑使用另一个 IDE。但恐怕你一定要熟悉 qmake 和 .PRO 文件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-11-24
            相关资源
            最近更新 更多