无法让 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 <QtGui/QApplication>
【讨论】:
【参考方案2】:使用 gcc 的 -I 选项提供额外的包含位置。
gcc hello_world.cpp -I/path-to-qt/include -o hello_world
如果你这样使用它,你必须像这样使用你的包含:
#include <QtGui/QApplication>
如果您希望您的包含更短,如 #include <QApplication>
,您可以提供多个包含文件夹,如下所示:
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<path_to_include_directory> -L<path_to_library_dir> -lQtCore
。
例如,在我的 Debian 中,我会这样做:g++ -I/usr/local/include/Qt4 -L/usr/local/lib -lQtCore -lQtGui whatever.cpp
编辑:感谢@erelender 指出QApplication
在QtGui
库中,它依赖于QtCore
。
【讨论】:
另外,如果您使用Qt SDK
或QtCreator
,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以上是关于无法让 Qt Hello World 工作的主要内容,如果未能解决你的问题,请参考以下文章
如何让 OpenGL Hello World 为 OSX 工作?