【问题标题】:Error QApplication: no such file or directory错误 QApplication:没有这样的文件或目录
【发布时间】:2012-02-18 04:55:43
【问题描述】:

我已经安装了具有 Qt 的 C++SDK,但是当我尝试编译链接 QApplication 的代码时,它给了我错误:

Error QApplication: no such file or directory

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

【问题讨论】:

  • 这个问题的标题。来源是一个简单的文件,我以为我不需要发布这个只是简单的:pastebin.com/972XtFUz
  • $locate QApplication 的输出是什么?
  • /home/ramy/Documents/C++QtSDK/Desktop/Qt/474/gcc/include/QtGui/QApplication /home/ramy/Documents/C++QtSDK/Madde/sysroots/harmattan_sysroot_10 .2011.34-1_slim/usr/include/qt4/QtGui/QApplication /home/ramy/Documents/C++QtSDK/Simulator/Qt/gcc/include/QtGui/QApplication /usr/include/qt4/QtGui/QApplication
  • 在 cmets 中,我告诉你写 run $qmake -project -d -Wall 并且你在执行命令时包含了 $。排除5,它只是告诉你这是一个你必须在shell中编写的命令
  • 调试 1:项目解析器:/usr/share/qt4/mkspecs/features/include_source_dir.prf:1 :INCLUDEPATH: :*=: (.)​​

标签: c++ qt


【解决方案1】:

看起来您没有安装开发库。使用安装它们:

sudo apt-get install libqt4-dev

正如你所说,在你安装了它们的 cmets 中,只需重新安装它。现在。要更新定位的数据库,请发出此命令$sudo updatedb

然后$locate QApplication 检查您现在是否安装了头文件。

现在,转到您拥有代码的文件夹并输入这些命令

qmake -project
qmake
make

然后你可以找到创建的二进制文件。

如果您想要 GUI,也可以使用 Qt Creator。

【讨论】:

  • 如果我输入 qmake -project,shell 会冻结几秒钟,我必须用 ctrl+c 中断。
  • 在 cmdline 中输入 $qmake -project -d -Wall 并告诉它挂在哪里。另外,你试过 QtCreator 吗?
  • ramy@ubuntu:~/Documents/C++/Prova$ $qmake -project -d -Wall 找不到命令'-project',你的意思是:命令'project'来自包'turnin-ng ' (universe) -project: command not found
  • 是的,我试过 QTcreator,但那里也说没有 QApplication
  • sudo apt-get install libqt4-dev 安装软件包然后重试。
【解决方案2】:

我建议您更新您的 SDK 并启动新项目并重新编译您拥有的所有内容。看来您有一些内部程序错误。或者你缺少包裹。

然后 ofc 就按照 Abdijeek 所说的去做。

【讨论】:

  • 我不明白,如果您安装了软件包,为什么会出现问题..您使用的是什么 SDK 和 NDK?你有什么开发工具? QT创造者? QT 有必要吗?
【解决方案3】:

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

当然,你可以运行:

$qmake -v

您的问题似乎是 QT 3 和 4 之间版本冲突的症状,如下所示:

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

要解决此问题,您可以删除旧安装的 QT,或在 Makefile 中专门指向 qmake-qt4。

【讨论】:

  • +1 用于展示如何测试版本,并提供指向更多信息的链接。
【解决方案4】:

首先,错误QApplication: no such file or directory 表示您的编译器无法找到此标头。它与您在问题中提到的链接过程无关。

-I 标志(大写 i)用于指定包含(标题)目录(这是您需要做的),而-L 标志用于指定库目录。 -l 标志(小写 L)用于将您的应用程序与指定的库链接。

但是您可以利用 Qt 来发挥自己的优势:Qt 有一个名为 qmake 的构建系统,它使事情变得更容易。例如,当我想编译 main.cpp 时,我会创建一个 ma​​in.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

编辑:Qt 5.x 及更高版本

在.pro文件中添加QT += widgets即可解决此问题。

【讨论】:

  • Qt 5.x之后需要在.pro文件中添加QT += widgets
  • 2019 年仍在工作,在 Mojave 运行的 QT5 中保存了我的培根。 +1
【解决方案5】:

确保你的路径中有 qmake(哪个 qmake),并且它可以工作(qmake -v) (如果你必须用 ctr-c 杀死它,那么你的环境有问题)。

然后按照这个:http://developer.qt.nokia.com/doc/qt-4.8/gettingstartedqt.html

【讨论】:

    【解决方案6】:

    在 Qt 5 中,您现在必须将 widgets 添加到 QT qmake 变量(在您的 MyProject.pro 文件中)。

     QT += widgets
    

    【讨论】:

    • 这是我解决这个问题的方法:link
    • 是的,如果您使用的是 qmake,上面的行会自动添加所有必要的编译器标志。
    • @Timmmm 好吧,如果我是 QT Creator 的新手,我真的不明白在哪里添加这一行,什么是 qt qmake 变量?一些配置项目文件或设置? (可能是任何东西,我还不知道)
    • stackoverflow.com/a/16060355/7767664有更明确的答案(添加到.pro文件)
    • 将小部件添加到 QT 变量,我仍然收到此错误消息。
    【解决方案7】:

    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
    

    【讨论】:

      【解决方案8】:

      对于 QT 5

      第一步: .pro(在 pro 文件中,添加这两行)

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

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

      #include <QtGui/QApplication> 
      

      与:

      #include <QApplication>
      

      【讨论】:

      • 对于 Qt 5,include 似乎是 #include &lt;QtWidgets/QApplication&gt;。那是根据 find /usr -name QApplication.
      【解决方案9】:

      你必须在第一次执行之前在.pro文件中添加QT +=widgets,如果你在添加这行之前执行它不会工作,所以你需要从头开始创建文件。

      【讨论】:

        【解决方案10】:

        您可以更改构建版本。例如,我尝试了 QT 5.6.1 但它不起作用。比我尝试 QT 5.7.0 。所以它起作用了,祝你好运! :)

        【讨论】:

          【解决方案11】:

          好吧,这有点晚了,但我刚刚开始学习 Qt,也许这可以帮助那里的人:

          如果您使用的是 Qt Creator,那么当您开始创建项目时,系统会要求您选择一个用于您的项目的工具包,假设您选择了 Desktop Qt &lt;version-here&gt; MinGW 64-bit。对于Qt 5,如果您打开安装的Qt 文件夹,您会在其中找到一个以安装的Qt 版本作为名称的文件夹,在这里您可以找到可以选择的工具包。

          你可以去/PATH/FOR/Qt/mingw&lt;version&gt;_64/include,在这里你会找到你可以在你的程序中使用的所有包含,只需搜索QApplication,你会在文件夹QtWidgets中找到它,所以你可以使用@ 987654325@,因为路径从include 文件夹开始。

          如果您遇到任何和其他套件,其他标头也是如此。

          注意:“所有你可以使用的包含”并不意味着这些是你唯一可以使用的,如果你包括iostream,那么编译器将从@987654328 包含它@

          【讨论】:

            【解决方案12】:

            #包括 #包括

            #include "ui_mainwindow.h" 此处出错 ...

            我有修复: 我使用KDevelop,文件->打开..->构建->构建->(在ui_mainwindow.h上单击)->打开

            瞧!

            【讨论】:

            • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
            猜你喜欢
            • 2013-04-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-31
            • 1970-01-01
            • 2013-08-08
            • 2013-11-04
            • 2012-10-21
            相关资源
            最近更新 更多