web-dev-qa-db-fra.com

Pourquoi Qt ne reconnaît-il pas mon fichier d'en-tête? ne peut pas ouvrir le fichier d'inclusion Aucun fichier ou répertoire de ce type

J'ai le ci-dessous dans mon fichier .pro et j'ai des fichiers qui #include "headerhere". Par exemple: #include "StdAfx.h". Cependant je reçois un

error Impossible d'ouvrir le fichier d'inclusion: 'StdAfx.h': Aucun fichier ou répertoire de ce type.

J'obtiens la même erreur si j'utilise #include "StdAfx.h" ou #include "Shared/StdAfx.h". C'est extrêmement frustrant et je ne peux faire aucun travail à moins que Qt ne commence à reconnaître mes en-têtes. J'ai trouvé en ligne aucune solution pour cela. Que se passe-t-il?

Le fichier .pro a:

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: pourquoi je reçois des votes négatifs? C'est un problème légitime que j'ai

Image showing it recognizes and doesn't recognize simultaneously

14
Terence Chow

J'ai eu le même problème aussi. La raison en était que j'utilise deux ordinateurs en parallèle et que le makefile a essayé de trouver des fichiers dans des chemins tels qu'ils sont définis sur le précédent. Mais tout semblait aller pour le mieux - comme dans votre cas, l'info-bulle lors du survol de l'inclinaison m'a indiqué le chemin correct, F2 (symbole de suivi sous le curseur) m'a également dirigé vers le bon en-tête.

Je pensais que qmake était refait à chaque fois que je modifiais quelque chose dans le fichier .pro, mais évidemment pas.

Il suffit de lancer Build-> qmake, cela devrait résoudre le problème.

13
vitakot

Vous devez mettre à jour le fichier qmake.

Build-> Run qmake
8
Sirga

ajouter dans .pro INCLUDEPATH + = $$ _ PRO_FILE_PWD_

2
stephone

J'ai ce problème de temps en temps, surtout quand je fais une demande de tirage ou que je copie un code.

La solution simple consiste à supprimer tous les fichiers générés par qt, puis à Build-> qmake puis à tout reconstruire.

C’est un bogue Qt qui ne permet pas d’identifier correctement les fichiers à régénérer et, même si le IDE relie bien tout, cette erreur se produit lors de la compilation. La même chose se produit lorsqu’il génère des fichiers d’en-tête ui_formname.h, certaines modifications ne sont pas apportées immédiatement.

Parfois, il est nécessaire de redémarrer QtCreator. La suppression et le redémarrage résolvent toujours ce problème.

Bonne journée!

0
Raphael States

Le fichier n'est pas dans votre chemin d'inclusion.

La partie HEADERS d'un fichier pro répertorie les fichiers d'en-tête dont dépend le projet. Ces fichiers sont considérés pour le traitement par moc s'ils ont la macro Q_OBJECT dans la définition de la classe. L'ajout d'un fichier à HEADERS ne le met pas dans le chemin de recherche d'inclusion.

Vous avez également un en-tête perdu (ewrappersubclass.h) parce que vous avez oublié d'échapper à la fin de la ligne.

Je soupçonne que la raison en est un problème de sensibilité à la casse Windows. Le compilateur est sensible à la casse, mais pas le système de fichiers. ou vice versa. Telle que vous #include "shared/stdafx.h" quand vous devriez #include "Shared/StdAfx.h".

0
koan

Je sais que ce post est très ancien, mais cela m'est juste arrivé.

INCLUDEPATH += $$PWD

a fait le tour. N'oubliez pas de faire qmake puis de tout construire.

Bonne chance!

0
htennek2k

C’est très probablement à cause de l’erreur précédente C1189, voir ici .

0
cmannett85