include windows.h / windef.h / etc
-
Hallo zusammen!
Ich weiß, ist irgendwie ne blöde Frage, aber ich hoffe, Ihr helft mir trotzdem
Wollte dieses Tutorial mal durchgehen:
->hier compilereinstellungen:
http://www.codeworx.org/directx_tuts_dd3_1.php
->hier der code:
http://www.codeworx.org/directx_tuts_dd3_2.phpIch benutze den frei verfügbaren "Visual C++ 2005 Express" Compiler und habe mich strikt an die oben genannte Anleitung gehalten.
Nun wollte ich das Ganze compilieren/erstellen, allerdings kam die Fehlermeldung, dass er die "windows.h" nicht findet. Hat mich gewundert, dass die beim "vc++2005express" nicht dabei sind, aber ich habe ihm dann einfach den Pfad zu DevCpp (hab ich auch noch installiert) angegeben, da sind alle include Dateien vorhanden.
Jetzt meckert er aber, dass irgendwelche Fehler in den Headerdateien sind, auf die von der Windows.h verwiesen wird...Hier die Fehlermeldungen:
------ Erstellen gestartet: Projekt: vc++_dx, Konfiguration: Debug Win32 ------
Kompilieren...
main.cpp
c:\programme\dev-cpp\include\winnt.h(3035) : warning C4103: "c:\programme\dev-cpp\include\winnt.h": Ausrichtung wurde nach Einschließen des Headers geändert, möglicherweise fehlt "#pragma pack(pop)".
c:\programme\dev-cpp\include\winnt.h(3327) : warning C4103: "c:\programme\dev-cpp\include\winnt.h": Ausrichtung wurde nach Einschließen des Headers geändert, möglicherweise fehlt "#pragma pack(pop)".
c:\programme\dev-cpp\include\winnt.h(3423) : warning C4068: Unbekanntes Pragma
c:\programme\dev-cpp\include\winnt.h(3428) : warning C4068: Unbekanntes Pragma
c:\programme\dev-cpp\include\winbase.h(1252) : error C2144: Syntaxfehler: 'void' sollte auf ';' folgen
c:\programme\dev-cpp\include\winbase.h(1252) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winbase.h(1253) : error C2144: Syntaxfehler: 'void' sollte auf ';' folgen
c:\programme\dev-cpp\include\winbase.h(1253) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winbase.h(1253) : error C2086: 'int DECLSPEC_NORETURN': Neudefinition
c:\programme\dev-cpp\include\winbase.h(1252): Siehe Deklaration von 'DECLSPEC_NORETURN'
c:\programme\dev-cpp\include\winbase.h(1313) : error C2144: Syntaxfehler: 'void' sollte auf ';' folgen
c:\programme\dev-cpp\include\winbase.h(1313) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winbase.h(1313) : error C2086: 'int DECLSPEC_NORETURN': Neudefinition
c:\programme\dev-cpp\include\winbase.h(1252): Siehe Deklaration von 'DECLSPEC_NORETURN'
c:\programme\dev-cpp\include\rpcdce.h(366) : error C2144: Syntaxfehler: 'void' sollte auf ';' folgen
c:\programme\dev-cpp\include\rpcdce.h(366) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\rpcdce.h(366) : error C2086: 'int DECLSPEC_NORETURN': Neudefinition
c:\programme\dev-cpp\include\winbase.h(1252): Siehe Deklaration von 'DECLSPEC_NORETURN'
c:\programme\dev-cpp\include\rpcdcep.h(89) : error C3646: "I_RpcAllocate": Unbekannter Überschreibungsspezifizierer
c:\programme\dev-cpp\include\rpcdcep.h(89) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\dev-cpp\include\rpcdcep.h(89) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\shellapi.h(129) : warning C4103: "c:\programme\dev-cpp\include\shellapi.h": Ausrichtung wurde nach Einschließen des Headers geändert, möglicherweise fehlt "#pragma pack(pop)".
c:\programme\dev-cpp\include\shellapi.h(265) : warning C4103: "c:\programme\dev-cpp\include\shellapi.h": Ausrichtung wurde nach Einschließen des Headers geändert, möglicherweise fehlt "#pragma pack(pop)".
c:\programme\dev-cpp\include\winsock2.h(524) : error C3646: "inet_ntoa": Unbekannter Überschreibungsspezifizierer
c:\programme\dev-cpp\include\winsock2.h(524) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\dev-cpp\include\winsock2.h(524) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winsock2.h(524) : error C2733: Zweite C-Bindung für überladene Funktion 'DECLARE_STDCALL_P' nicht zulässig
c:\programme\dev-cpp\include\winsock2.h(524): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(533) : error C3646: "gethostbyaddr": Unbekannter Überschreibungsspezifizierer
c:\programme\dev-cpp\include\winsock2.h(533) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\dev-cpp\include\winsock2.h(533) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winsock2.h(533) : error C2733: Zweite C-Bindung für überladene Funktion 'DECLARE_STDCALL_P' nicht zulässig
c:\programme\dev-cpp\include\winsock2.h(533): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(534) : error C3646: "gethostbyname": Unbekannter Überschreibungsspezifizierer
c:\programme\dev-cpp\include\winsock2.h(534) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\dev-cpp\include\winsock2.h(534) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winsock2.h(534) : error C2556: 'int (__cdecl *DECLARE_STDCALL_P(hostent *))(const char *)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'int (__cdecl *DECLARE_STDCALL_P(hostent *))(const char *,int,int)'
c:\programme\dev-cpp\include\winsock2.h(533): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(534) : error C2371: 'DECLARE_STDCALL_P': Neudefinition; unterschiedliche Basistypen
c:\programme\dev-cpp\include\winsock2.h(533): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(535) : error C3646: "getservbyport": Unbekannter Überschreibungsspezifizierer
c:\programme\dev-cpp\include\winsock2.h(535) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\dev-cpp\include\winsock2.h(535) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winsock2.h(535) : error C2733: Zweite C-Bindung für überladene Funktion 'DECLARE_STDCALL_P' nicht zulässig
c:\programme\dev-cpp\include\winsock2.h(535): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(536) : error C3646: "getservbyname": Unbekannter Überschreibungsspezifizierer
c:\programme\dev-cpp\include\winsock2.h(536) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\dev-cpp\include\winsock2.h(536) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winsock2.h(536) : error C2556: 'int (__cdecl *DECLARE_STDCALL_P(servent *))(const char *,const char *)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'int (__cdecl *DECLARE_STDCALL_P(servent *))(int,const char *)'
c:\programme\dev-cpp\include\winsock2.h(535): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(536) : error C2371: 'DECLARE_STDCALL_P': Neudefinition; unterschiedliche Basistypen
c:\programme\dev-cpp\include\winsock2.h(535): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(537) : error C3646: "getprotobynumber": Unbekannter Überschreibungsspezifizierer
c:\programme\dev-cpp\include\winsock2.h(537) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\dev-cpp\include\winsock2.h(537) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winsock2.h(537) : error C2733: Zweite C-Bindung für überladene Funktion 'DECLARE_STDCALL_P' nicht zulässig
c:\programme\dev-cpp\include\winsock2.h(537): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(538) : error C3646: "getprotobyname": Unbekannter Überschreibungsspezifizierer
c:\programme\dev-cpp\include\winsock2.h(538) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\dev-cpp\include\winsock2.h(538) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\programme\dev-cpp\include\winsock2.h(538) : error C2556: 'int (__cdecl *DECLARE_STDCALL_P(protoent *))(const char *)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'int (__cdecl *DECLARE_STDCALL_P(protoent *))(int)'
c:\programme\dev-cpp\include\winsock2.h(537): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\programme\dev-cpp\include\winsock2.h(538) : error C2371: 'DECLARE_STDCALL_P': Neudefinition; unterschiedliche Basistypen
c:\programme\dev-cpp\include\winsock2.h(537): Siehe Deklaration von 'DECLARE_STDCALL_P'
c:\dokumente und einstellungen\luka\eigene dateien\fh\gd\game\vs2005\vc++_dx\vc++_dx\main.cpp(28) : error C2440: '=': 'const char [11]' kann nicht in 'LPCWSTR' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
c:\dokumente und einstellungen\luka\eigene dateien\fh\gd\game\vs2005\vc++_dx\vc++_dx\main.cpp(40) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [11]' in 'LPCWSTR' nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\luka\Eigene Dateien\FH\GD\Game\VS2005\vc++_dx\vc++_dx\Debug\BuildLog.htm" gespeichert.
vc++_dx - 47 Fehler, 6 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Nun konkret meine Frage: Was habe ich falsch gemacht? Und überhaupt, diese Headerdateien müssen doch bei "vc++2005express" dabei sein, oder? Außerdem können die ja gar nicht Fehlerbehaftet sein, ich habe sie in vorigen Projekten (mit DevCpp) schon benutzt.
Vielen Dank im Voraus!
-
Nein, diese Headerdateien müssen nicht dabei sein. Warum auch? windows.h ist eine Win32-API-Headerdatei. Wo steht gesetztlich vorgeschrieben, das ein Compiler unter/für Windows diese dabei haben muß? Eben!
Die Express Edition liefert dir erstmal das nötigste, damitr du ISO C++ und C++/CLI programmieren kannst. Win32-API hat erstmal nichts mit ISO C++ zu tun.
Wenn du für die Win32-Platform entwickeln willst, mußt du das separate Windows Platform SDK herunter laden. In diesem Thread steht, wo du das PSDK bekommst und einrichtest:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.htmlUnd die DevC++-Header für MSVC benutzen zu wollen, ist auch ziemlich naiv. Weil die Header bzw. Library vom DevC++ eigentlich vom MinGW sind, und der wiederrum nicht das Platform SDK benutzt.
-
Vielen Dank für die schnelle und genaue Antwort!
..sowas muss man aber auch erstmal wissen. Ich bin auch schon dabei zu installieren
- hoffe, es klappt alles!
Danke nochmal!