为什么Qt不识别我的头文件?无法打开包含文件没有这样的文件或目录

时间:2013-04-27 22:29:46

标签: c++ qt

我的.pro文件中有以下内容,我有#include "headerhere".的文件,例如:#include "StdAfx.h"。但是我得到了一个

  

错误无法打开包含文件:'StdAfx.h':没有这样的文件或目录。

无论是使用#include "StdAfx.h"还是#include "Shared/StdAfx.h",我都会遇到同样的错误。这非常令人沮丧,除非Qt开始识别我的标题,否则我无法做任何实际的工作。我在网上找不到解决方案。发生了什么事?

.pro文件有:

HEADERS  += ibproject.h \
Shared/StdAfx.h \
Shared/TwsSocketClientErrors.h \
Shared/TagValue.h \
Shared/shared_ptr.h \
Shared/ScannerSubscription.h \
Shared/OrderState.h \
Shared/Order.h \
Shared/IBString.h \
Shared/HScrollListBox.h \
Shared/Execution.h \
Shared/EWrapper.h \
Shared/EClientSocketBaseImpl.h \
Shared/EClientSocketBase.h \
Shared/EClient.h \
Shared/Contract.h \
Shared/CommonDefs.h \
Shared/CommissionReport.h \
SocketClient/src/EClientSocket.h
ewrappersubclass.h 

INCLUDEPATH += $$PWD/SocketClient
DEPENDPATH += $$PWD/SocketClient

编辑:为什么我得到了投票?这是我遇到的合法问题

Image showing it recognizes and doesn't recognize simultaneously

7 个答案:

答案 0 :(得分:13)

我也有同样的问题。原因是我并行使用两台计算机,并且makefile尝试在路径上查找文件,因为它们是在前一个计算机上设置的。但是一切似乎都很好 - 就像你的情况一样,悬停在包含上的工具提示向我显示了正确的路径,同时F2(跟随光标下的符号)导航我到正确的标题。

我认为每次更改.pro文件中的内容时都会重新生成qmake,但显然不是。

只需运行Build-> qmake,就应该修复它。

答案 1 :(得分:9)

您需要更新qmake文件。

Build-> Run qmake

答案 2 :(得分:2)

添加.pro INCLUDEPATH + = $$ _ PRO_FILE_PWD _

答案 3 :(得分:0)

该文件不在您的包含路径中。

专业文件的HEADERS部分列出了项目所依赖的头文件。如果这些文件在类定义中具有Q_OBJECT宏,则考虑由moc进行处理。向HEADERS添加文件不会将其放入包含搜索路径。

你也有一个迷路标题(ewrappersubclass.h),因为你忘了逃避行尾。

我怀疑其原因是Windows区分大小写问题。编译器区分大小写,但文件系统不是;或相反亦然。这样#include "shared/stdafx.h"就应该#include "Shared/StdAfx.h"

答案 4 :(得分:0)

很可能是因为之前的C1189错误,请参阅here

答案 5 :(得分:0)

我知道这篇文章已经很老了,但它刚好发生在我身上。

INCLUDEPATH += $$PWD

做了这个伎俩。别忘了做qmake然后再建好。

一切顺利!

答案 6 :(得分:0)

我经常遇到这个问题,主要是当我提出拉取请求或复制代码时。

简单的解决方案是删除所有qt生成的文件,然后使用Build-> qmake然后重建所有文件。

这是一个Qt Bug,它无法正确识别需要重新生成的文件,即使IDE很好地链接了所有内容,该错误也会在编译时发生。当它生成ui_formname.h头文件时会发生同样的情况,有些更改不会立即生效。

有时,重启QtCreator是必要的。执行删除和重新启动始终可以解决这个问题。

度过美好的一天!