2013-04-27 6 views
11

Ich habe die unten in meiner .pro-Datei und ich habe Dateien, die #include "headerhere". Zum Beispiel: #include "StdAfx.h". Allerdings bekomme ich eineWarum erkennt Qt meine Header-Datei nicht? kann nicht enthalten Include-Datei Keine solche Datei oder Verzeichnis

Fehler Kann nicht Include-Datei: 'StdAfx.h': Keine solche Datei oder Verzeichnis.

Ich bekomme den gleichen Fehler, ob ich #include "StdAfx.h" oder #include "Shared/StdAfx.h" verwenden. Das ist extrem frustrierend und ich kann keine wirkliche Arbeit machen, außer Qt beginnt meine Header zu erkennen. Ich habe online keine Lösung dafür gefunden. Was ist los?

.proDatei hat:

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: warum ich downvotes bin immer? Dies ist ein legitimes Problem, das ich habe

Image showing it recognizes and doesn't recognize simultaneously

+0

Also welches Verzeichnis hat "stdafx.h"? – john

+0

@john es ist derzeit in 'shared/stdafx.h', aber um ehrlich zu sein, ich habe es kopiert und sowohl in den Stammordner und den freigegebenen Ordner eingefügt, nur um zu testen, ob es war, weil ich etwas Syntax falsch hatte. Nein, es erkennt es nicht, selbst wenn es in beiden Ordnern ist –

+2

Ich weiß QT nicht, aber haben Sie versucht, das Verzeichnis mit stdafx.h zu INCLUDEPATH hinzufügen, so etwas wie 'INCLUDEPATH + = $$ PWD' – john

Antwort

0

Die Datei ist nicht in Ihrem Include-Pfad.

Der Abschnitt HEADERS einer Profildatei listet Headerdateien auf, von denen das Projekt abhängt. Diese Dateien werden von moc für die Verarbeitung berücksichtigt, wenn sie in der Klassendefinition über das Makro Q_OBJECT verfügen. Wenn Sie eine Datei HEADERS hinzufügen, wird sie nicht in den Include-Suchpfad eingefügt.

Sie haben auch eine streunende Kopfzeile (ewrappersubclass.h), weil Sie vergessen haben, das Ende der Zeile zu entkommen.

Ich vermute, dass der Grund dafür ein Windows-Problem mit der Groß- und Kleinschreibung ist. Der Compiler ist Groß-und Kleinschreibung, aber das Dateisystem ist nicht; oder umgekehrt. So dass Sie #include "shared/stdafx.h" wenn Sie sollten #include "Shared/StdAfx.h".

+0

Ich habe einen Screenshot hinzugefügt, damit Sie sehen können, dass ich den Fall richtig eingegeben habe. Mein 'INCLUDESPATH' muss nicht' StdAfx.h' hinzufügen, weil ich es mit 'Shared/StdAfx.h' einschließe ... Irgendeine Idee, warum das passiert? –

+0

Sie sollten sich das Makefile anschauen, das mit qmake generiert wurde, um herauszufinden, welcher Include-Pfad dem Compiler zugewiesen wird. – koan

0

Es ist wahrscheinlich wegen des vorherigen C1189-Fehlers, siehe here.

8

Sie müssen die qmake-Datei aktualisieren.

Build-> Run qmake 
11

Ich hatte das gleiche Problem. Der Grund war, dass ich zwei Computer parallel nutze und das Makefile versuchte, Dateien auf Wegen zu finden, wie sie auf der vorherigen eingestellt waren. Aber alles schien in Ordnung zu sein - wie in deinem Fall, Tooltip beim Schweben über das Include zeigte mir den richtigen Pfad, auch F2 (Symbol unter Cursor folgen) navigierte mich zum richtigen Header.

Ich dachte qmake wird jedes Mal neu erstellt, wenn ich etwas in der .pro-Datei ändern, aber natürlich nicht.

Starten Sie einfach Build-> qmake, es sollte es beheben.

+0

build -> qmake did er trick! Vielen Dank! –

+0

auch, qt kann keine Leerzeichen im Pfad erkennen, bitte berücksichtigen Sie dies. –

2

hinzufügen in .pro INCLUDEPATH + = $$ _ PRO_FILE_PWD_

+0

Das hat mein Problem gelöst. Das Projekt hat Wochen gut funktioniert, aber als ich das Compilier-Kit geändert habe, wurde keine Header-Datei mehr gefunden. Das Hinzufügen dieses INCLUDEPATH zur * .pro-Datei löste das Problem, aber ich verstehe immer noch nicht, was passiert ist und warum die Änderung durchgeführt werden musste? –

+0

Ich bin mir nicht sicher warum es funktioniert..aber es funktioniert :-) – stephone

0

Ich weiß, dass dieser Beitrag sehr alt, aber es mir gerade passiert ist.

INCLUDEPATH += $$PWD 

haben den Trick gemacht. Vergiss nicht, qmake zu machen und dann alles zu bauen.

Alles Gute!

0

Ich habe dieses Problem von Zeit zu Zeit, vor allem, wenn ich eine Pull-Anfrage machen oder Code kopieren.

Die einfache Lösung ist, alle qt generierten Dateien zu löschen, und Build-> qmake dann alles neu erstellen.

Dies ist ein Qt Bug, der nicht richtig identifiziert Dateien, die neu generiert werden müssen, und obwohl die IDE alles gut verbindet, passiert dieser Fehler zur Kompilierzeit. Das gleiche passiert, wenn es ui_formname.h Header-Dateien generiert, einige Änderungen werden nicht sofort wirksam.

Manchmal ist ein Neustart des QtCreators erforderlich. Das Löschen und Neustarten löst immer genau dieses Problem.

Einen schönen Tag noch!

Verwandte Themen