Почему Qt не распознает мой заголовочный файл? не может открыть файл include Нет такого файла или каталога

У меня есть следующее в моем .pro файле, и у меня есть файлы, которые #include "headerhere". Например: #include "StdAfx.h". Однако я получаю

Ошибка Не удается открыть файл include: '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

EDIT: почему я получаю downvotes? Это законная проблема, с которой я сталкиваюсь

Image showing it recognizes and doesn't recognize simultaneously

Ответ 1

У меня была такая же проблема. Причина в том, что я использую два компьютера параллельно, и make файл пытается найти файлы по пути, как они установлены на предыдущем. Но все казалось прекрасным - как в вашем случае, всплывающая подсказка при наведении курсора на include показала мне правильный путь, также F2 (после символа под курсором) переместил меня в правильный заголовок.

Я думал, что qmake переделывается каждый раз, когда я что-то меняю в файле .pro, но, очевидно, нет.

Просто запустите Build- > qmake, он должен его исправить.

Ответ 2

Вам необходимо обновить файл qmake.

Build-> Run qmake

Ответ 3

добавить .pro INCLUDEPATH + = $$ _ PRO_FILE_PWD _

Ответ 4

Файл не входит в ваш путь include.

Часть HEADERS файла pro перечисляет файлы заголовков, от которых зависит проект. Эти файлы рассматриваются для обработки moc, если у них есть макрос Q_OBJECT в определении класса. Добавление файла в HEADERS не помещает его в путь поиска include.

У вас также есть паразитный заголовок (ewrappersubclass.h), потому что вы забыли выйти из конца строки.

Я подозреваю, что причиной этого является проблема чувствительности к регистру Windows. Компилятор чувствителен к регистру, но файловая система не является; или наоборот. Чтобы вы #include "shared/stdafx.h", когда вам нужно #include "shared/stdafx.h".

Ответ 5

Скорее всего, из-за предыдущей ошибки C1189, см. здесь.

Ответ 6

Я знаю, что этот пост очень старый, но это случилось со мной.

INCLUDEPATH += $$PWD

сделал трюк. Не забудьте сделать qmake, а затем построить все.

Все самое лучшее!