2011-07-05 52 views
2

在Qt中,一些头通过比较典型的故障包括Qt头

#include "QtCore/qtheader.h" 

包括但有时候它使用这个符号:

#include <QString> 

我不知道有什么区别,或者为什么这完成了。无论如何,我遇到了麻烦,包括自己使用后面的符号的头文件。有任何想法吗?

谢谢。

+2

后的实际错误消息,您使用的命令行以及机器上标题的位置。你展示的第一个例子是_not_ typical。 – Mat

回答

0

在C和C++中,使用双引号时,表示:搜索与此文件相同的目录。当您使用<>时,它表示:搜索包含路径。

使用gcc,您可以使用-I命令行参数添加包含路径。

你使用的是Qt Creator和qmake吗?如果你是这样,编辑.pro像这样的问题/答案:How to add include path in Qt Creator?

+1

我的理解是“-I”用于包含文件,“-L”用于库文件。我错了吗? –

+0

这是相反的。 -L代表库路径(.a或.so所在的位置),-l代表库的名称。像'-lm'。我在那里写错了。让我解决它。 (我用-L代替-I) –

+1

由于字体不好,我在说'-I'(大写)包含文件。 'L'选项用于库。 –

0

我不知道什么是造成你的麻烦,因为你没有指定足够的细节。无论如何,在C++中,当您使用<>时,意味着您要在包含路径中进行搜索。您可以指定包含路径,并在Qt中添加一些目录:

INCLUDEPATH += ... 

在项目文件中。 如果您使用双引号,请询问将当前源目录添加到到包含路径。

所以你会看到:

#include <QString> 

,因为在你的系统包括路径应该有一个名为QString的文件。这里面确实是有:

#include "qstring.h" 

这是在事实上,通常在QtCore目录。

+0

应该没有必要向'INCLUDEPATH'添加任何东西来获取Qt头文件。 – Troubadour

+0

我的确没有这么说。我只是说,可以使用该指令添加新的包含路径。这个问题本身,用“无论”这个词让我觉得作者并不是指包括Qt头文件在内的问题。 –

+1

我在cmd行上使用gcc,而不是qt创建者。 – glutz

4

这是你描述的奇怪行为。做

#include <QString> 

应该“只是工作”,因为它几乎是标准的做法。

我能想到的唯一的事情就是你已经覆盖了项目文件中的QT变量。例如,如果你做

QT=opengl 

在OpenGL的模块获得,而不是

QT+=opengl 

那么你会得到你所描述的行为。

1

由于您几乎没有提供有关该错误以及您正在使用哪种开发环境的信息,因此如果您不使用.pro文件,则以下事项可能会成为问题。如果您实际使用.pro文件,这可能与您无关:

如果您正在使用例如Visual Studio中,而不是Qt工程文件,你只包括$(QTDIR)\包括,那么你将不得不写

#include <QtCore/QObject> 
#include <QtGui/QWidget> 

等。这是因为Qt的包含目录在子文件夹“QtCore”,“QtGui”等文件。

如果你不想添加QtCore或QtGui或任何在你的包括,你将不得不包括$(QTDIR )\包括\ QtCore,$(QTDIR)\包括\ QtGui等

(请注意,我不是100%地肯定了包括路径,不能看它在本机上)