无法让 Qt Hello World 工作

Posted

技术标签:

【中文标题】无法让 Qt Hello World 工作【英文标题】:Can't get a Qt Hello World to work 【发布时间】:2013-09-05 07:47:13 【问题描述】:

我使用this official guide 提供的说明在 OSX Lion 上编译了 Qt。然后我尝试用gcc hello_world.cpp -o hello_world编译下面的Hello World@

#include <QApplication>

int main(int argc, char **argv)

    QApplication app (argc, argv);
    return app.exec();

我遇到以下错误:

hello_world.cpp:1:10: fatal error: 'QApplication' file not found
#include <QApplication>
         ^
1 error generated.

【问题讨论】:

您不必将包含和 lib 目录的路径传递给编译器吗? 如此神秘的错误信息......人们应该如何理解它们的意思? @Viclib 您没有使用 QtCreator 是否有特定原因? 如果您以前从未在没有 IDE 的情况下使用过 C++,而且您没有鼠标,那么您之前是如何通过 IDE 使用 C++ 的? 如果你正在编译 C++ 程序,你应该改用 g++ 编译器。 【参考方案1】:

试试#include &lt;QtGui/QApplication&gt;

【讨论】:

【参考方案2】:

使用 gcc 的 -I 选项提供额外的包含位置。

gcc hello_world.cpp -I/path-to-qt/include -o hello_world

如果你这样使用它,你必须像这样使用你的包含:

#include <QtGui/QApplication>

如果您希望您的包含更短,如 #include &lt;QApplication&gt;,您可以提供多个包含文件夹,如下所示:

gcc hello_world.cpp -I/path-to-qt/include/QtCore -I/path-to-qt/include/QtGui -o hello_world

但这还不是全部。您还必须提供库目录以及要链接到的库,方法如下:

gcc hello_world.cpp -I/path-to-qt/include/QtCore -I/path-to-qt/include/QtGui -o hello_world -L/path-to-qt/lib -lQtCore -lQtGui

使用 g++ 也更好,因为您使用的是 C++。

g++ hello_world.cpp -I/path-to-qt/include/QtCore -I/path-to-qt/include/QtGui -o hello_world -L/path-to-qt/lib -lQtCore -lQtGui

【讨论】:

我不确定库的名称,它们可以是 QtCore 或 QtCore4【参考方案3】:

试试g++ -I&lt;path_to_include_directory&gt; -L&lt;path_to_library_dir&gt; -lQtCore

例如,在我的 Debian 中,我会这样做:g++ -I/usr/local/include/Qt4 -L/usr/local/lib -lQtCore -lQtGui whatever.cpp

编辑:感谢@erelender 指出QApplicationQtGui 库中,它依赖于QtCore

【讨论】:

另外,如果您使用Qt SDKQtCreator,IDE 可能会为您找到正确的路径并编译程序。 QApplication在QtGui库中,依赖于QtCore库。 那么它应该是-lQtCore -lQtGui 或者这些库的名称。我认为我从源代码构建的那些最后没有版本号,但我不确定。【参考方案4】:

如果您尝试使用 -I 标志为 gcc 添加额外的包含路径怎么办?比如:

gcc -I/usr/local/Qt-5.1.1/include hello_world.cpp -o hello_world

【讨论】:

-I 后面不能有空格【参考方案5】:

不确定 mac 中的路径,但在 Linux 上是 QApplication 类 在以下位置定义(qt4)

/usr/include/qt4/QtGui/qwindowdefs.h

Mac 上有类似的东西吗?

如果您是从命令行构建,则可以使用以下开关来包含带有 gcc 的头文件

-I<path to .h file>

【讨论】:

是的,我在/usr/local/Qt-5.1.1/include/QtGui/qwindowdefs.h 有这些。我不确定我该告诉 GCC 什么,以便他找到。 使用 -I 包含 .h 文件作为 gcc 命令行的切换

以上是关于无法让 Qt Hello World 工作的主要内容,如果未能解决你的问题,请参考以下文章

如何让 OpenGL Hello World 为 OSX 工作?

一个简单的 Hello World setuptools 包并使用 pip 安装它

Qt开发01-第一个Qt程序Hello World!

QT第一个程序 hello,world

QT——2Hello World

Android Hello World Qt 5.2