我的.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
编辑:为什么我得到了投票?这是我遇到的合法问题
答案 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是必要的。执行删除和重新启动始终可以解决这个问题。
度过美好的一天!