Error:#include<windows.h>, bzw. winnt.h ist kaputt gegangen!
Verfasst: 18.07.2011, 02:47
Hallo. Das hier ist einer meiner ersten Beiträge auf diesem Forum. Demnach, weiß ich auch nicht wirklich, ob ich das hier in der richtigen Rubrik poste. :oops:
Jedenfalls, hier ist meine momentane Situation und das Problem:
Ich lerne gerade mit dem Buch: "C++ für Spieleprogrammierer" C++. Ich bin gerade bei der Windows-Programmierung und habe auch schon mein erstes Fenster erstellt.
Dazu habe ich natürlich auch windows.h eingebunden. Das hatte ich sogar schon einige Kapitel vorher gemacht, um die Funktion "Sleep()" verwenden zu können.
Ich hatte schon 2 bis 3 Wochen keine zeit mehr wirklich viel an C++ weiter zu arbeiten und hab deshalb keines meiner kleinen Projekte angerührt.
Jedenfalls habe ich vor einigen Stunden wieder das Buch aufgeschlagen und bin bei einer Aufgabenstellung gelandet. Meine Aufgabe sei es, dass alte Projekt
mit dem Windows-Fenster zu modifizieren. Bevor ich das Projekt modifiziert habe, hab ich es erst noch ein paar mal kompiliert und damit "rumexperimentiert"
(Nur mit dem erstellten Windows-Fenster, nicht mit dem Projekt).
Dann wollte ich mich ans Werk machen und die vom Buch gestellte Aufgabe schaffen. Ich habe dann 2 Zahlen bei der Generierung des Win-Fenster geändert
und das Projekt, auf ein weiteres, kompiliert.
Dabei bekam ich dann folgende Fehlermeldungen:
Doch dann kamen wieder diese Error-Meldungen. Also habe ich angefangen mich mit den Errors zu beschäftigen. "winnt.h" ist eine in "Windows.h" enthaltene Datei, welche
nicht von mir verändert wurde. So viel steht schon mal fest.
Ich habe angefangen, im Internet nach Lösungen zu suchen, da ich echt keine Ahnung habe was ich mit so einem "Scherz" von Visual C++ 2010 machen soll.
Auch ältere Projekte in denen ich "windows.h" included hatte werfen die selben Meldungen aus.
Auf Google wurde ich schnell fündig! Es gibt 100te Leute mit dem selben Problem: PVOID64 (in winnt.h) ist aus heiterem Himmel kaputt gegangen.
Doch die Lösungen zu dem Problem funktionierten nicht bei mir. Unter anderem benutzen andere eine viel ältere Version von Visual Studio, welche andere Lösungen unterstützten, oder ihr Problem
trat erst mit Einbindung der DirectX SDK auf.
In einigen Lösungsvorschlägen wird man aufgefordert "winnt.h" selbst zu modifizieren. Zum Beispiel sollte man "PVOID64" löschen und in Zeile 8992 eher "POINTER_64" als "PVOID64" verwenden.
Ich habe das versucht, da es für mich und meiner Software Version am naheliegensden ist. Doch funktioniert das nicht da sowohl die Datei "WinNT.h" als auch der Ordner: "c:\program files\microsoft sdks\windows\v7.0a\include\"
schreibgeschützt ist. Ich kann also weder die vorhandene Datei ändern, noch überschreiben. Ich kann in dem Ordner nicht einmal eine Datei erstellen trotz Admin-Rechte.
Außerdem besitze ich den "Take Ownership" Win-7 hack. Doch nicht einmal dadurch wird die Datei für mich zugängig.
Ich habe jetzt schon 3 Stunden nach einer Lösung gesucht doch ich finde nichts. Seltsam ist, dass der Fehler von einer Sekunde zur anderen aufgetaucht ist. Noch Sekunden Davor hat alles funktioniert.
Ich weiß nicht wie ich diesem Problem gerecht werden kann und würde mich freuen, wenn jemand weiß, wie man es beheben kann.
Hier sind noch mal weitere Informationen:
-Ich benutze Windows 7 32-bit
-Ich benutze Visual C++ 2010 Express Edition
-"Windows.h" ist die einzige eingebundene Bibliothek und sollte unverändert sein
-Auch ältere Projekte mit "Windows.h" geben die selben Fehler aus
-Ich arbeite NICHT mit der D3D SDK
-Sekunden vorher gab es noch keine Fehler doch selbst noch dem Rückgängig-machen der Änderungen blieben die Fehler konstant
-Der "Syntaxfehler" befindet sich in der Datei "WinNt.h"
-Diese Datei wurde NICHT von mir geändert und ist Schreibgeschützt. Ich kann sie gar nicht ändern oder "reparieren"
-Die Optionen und Einstellungen von Visual C++ sollten alle auf Standard stehen. Lediglich die Verwendung von einem Unicode Standard wurde angestellt. Diese war jedoch wegen des Syntax des Beispiels im Buch notwendig und hatte sonst auch nie für Probleme gesorgt.
Okay, Hier ist noch der Codeblock in dem <Windows.h> eingebunden wird:
PS:
Ich bin echt verzweifelt! Ohne Unterstützung kann ich nicht weiter an C++ arbeiten, da ich sonst nicht nur im Buch, sondern auch an der Windows-Programmierung hängen bleibe
Und so lange mein Problem nicht gelöst ist wird Hier "ICH HASSE MICROSOFT STEHEN". Ich bin wirklich so Verzweifelt mit C++, dass ich nicht anders empfinden kann!
Jedenfalls, hier ist meine momentane Situation und das Problem:
Ich lerne gerade mit dem Buch: "C++ für Spieleprogrammierer" C++. Ich bin gerade bei der Windows-Programmierung und habe auch schon mein erstes Fenster erstellt.
Dazu habe ich natürlich auch windows.h eingebunden. Das hatte ich sogar schon einige Kapitel vorher gemacht, um die Funktion "Sleep()" verwenden zu können.
Ich hatte schon 2 bis 3 Wochen keine zeit mehr wirklich viel an C++ weiter zu arbeiten und hab deshalb keines meiner kleinen Projekte angerührt.
Jedenfalls habe ich vor einigen Stunden wieder das Buch aufgeschlagen und bin bei einer Aufgabenstellung gelandet. Meine Aufgabe sei es, dass alte Projekt
mit dem Windows-Fenster zu modifizieren. Bevor ich das Projekt modifiziert habe, hab ich es erst noch ein paar mal kompiliert und damit "rumexperimentiert"
(Nur mit dem erstellten Windows-Fenster, nicht mit dem Projekt).
Dann wollte ich mich ans Werk machen und die vom Buch gestellte Aufgabe schaffen. Ich habe dann 2 Zahlen bei der Generierung des Win-Fenster geändert
und das Projekt, auf ein weiteres, kompiliert.
Dabei bekam ich dann folgende Fehlermeldungen:
Ich habe mich gewundert, da das Projekt noch 5 Sekunden vorher problemlos kompiliert wurde. Ich änderte daraufhin wieder die Zahlen zu ihrem ursprünglichem Wert zurück.1>------ Erstellen gestartet: Projekt: Win32, Konfiguration: Debug Win32 ------
1> Win32-C++.cpp
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'PVOID64'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Buffer'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Doch dann kamen wieder diese Error-Meldungen. Also habe ich angefangen mich mit den Errors zu beschäftigen. "winnt.h" ist eine in "Windows.h" enthaltene Datei, welche
nicht von mir verändert wurde. So viel steht schon mal fest.
Ich habe angefangen, im Internet nach Lösungen zu suchen, da ich echt keine Ahnung habe was ich mit so einem "Scherz" von Visual C++ 2010 machen soll.
Auch ältere Projekte in denen ich "windows.h" included hatte werfen die selben Meldungen aus.
Auf Google wurde ich schnell fündig! Es gibt 100te Leute mit dem selben Problem: PVOID64 (in winnt.h) ist aus heiterem Himmel kaputt gegangen.
Doch die Lösungen zu dem Problem funktionierten nicht bei mir. Unter anderem benutzen andere eine viel ältere Version von Visual Studio, welche andere Lösungen unterstützten, oder ihr Problem
trat erst mit Einbindung der DirectX SDK auf.
In einigen Lösungsvorschlägen wird man aufgefordert "winnt.h" selbst zu modifizieren. Zum Beispiel sollte man "PVOID64" löschen und in Zeile 8992 eher "POINTER_64" als "PVOID64" verwenden.
Ich habe das versucht, da es für mich und meiner Software Version am naheliegensden ist. Doch funktioniert das nicht da sowohl die Datei "WinNT.h" als auch der Ordner: "c:\program files\microsoft sdks\windows\v7.0a\include\"
schreibgeschützt ist. Ich kann also weder die vorhandene Datei ändern, noch überschreiben. Ich kann in dem Ordner nicht einmal eine Datei erstellen trotz Admin-Rechte.
Außerdem besitze ich den "Take Ownership" Win-7 hack. Doch nicht einmal dadurch wird die Datei für mich zugängig.
Ich habe jetzt schon 3 Stunden nach einer Lösung gesucht doch ich finde nichts. Seltsam ist, dass der Fehler von einer Sekunde zur anderen aufgetaucht ist. Noch Sekunden Davor hat alles funktioniert.
Ich weiß nicht wie ich diesem Problem gerecht werden kann und würde mich freuen, wenn jemand weiß, wie man es beheben kann.
Hier sind noch mal weitere Informationen:
-Ich benutze Windows 7 32-bit
-Ich benutze Visual C++ 2010 Express Edition
-"Windows.h" ist die einzige eingebundene Bibliothek und sollte unverändert sein
-Auch ältere Projekte mit "Windows.h" geben die selben Fehler aus
-Ich arbeite NICHT mit der D3D SDK
-Sekunden vorher gab es noch keine Fehler doch selbst noch dem Rückgängig-machen der Änderungen blieben die Fehler konstant
-Der "Syntaxfehler" befindet sich in der Datei "WinNt.h"
-Diese Datei wurde NICHT von mir geändert und ist Schreibgeschützt. Ich kann sie gar nicht ändern oder "reparieren"
-Die Optionen und Einstellungen von Visual C++ sollten alle auf Standard stehen. Lediglich die Verwendung von einem Unicode Standard wurde angestellt. Diese war jedoch wegen des Syntax des Beispiels im Buch notwendig und hatte sonst auch nie für Probleme gesorgt.
Okay, Hier ist noch der Codeblock in dem <Windows.h> eingebunden wird:
Code: Alles auswählen
#include<Windows.h>
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR lpcmdline, int ncmdshow)
{
WNDCLASSEX windowclass;
HWND hWnd;
MSG message;
const char szClassName[15] = "Erstes Fenster";
windowclass.cbSize = sizeof (WNDCLASSEX);
windowclass.style = CS_HREDRAW | CS_VREDRAW;
(...)(...)
PS:
Ich bin echt verzweifelt! Ohne Unterstützung kann ich nicht weiter an C++ arbeiten, da ich sonst nicht nur im Buch, sondern auch an der Windows-Programmierung hängen bleibe
Und so lange mein Problem nicht gelöst ist wird Hier "ICH HASSE MICROSOFT STEHEN". Ich bin wirklich so Verzweifelt mit C++, dass ich nicht anders empfinden kann!