# [C++] DirectX SDK



## Raven280438 (19. Juni 2010)

Hi,

ich möchte mich mit Spieleprogrammierung mit DirectX beschäftigen.

Ich habe mir das Buch "Spieleprogrammierung in C++" von Galileo Computing gekauft und wollte die Spiele die darin enthalten sind nachbauen.

Das Buch basiert auf DirectX8, zumindest ist dieses SDK auf der CD enthalten.

Ich habe aber DirectX SDK 10 von Juni 2010 installiert

Leider bekomme ich beim Komilieren verschiedene Fehlermeldungen von einigen Header-Dateien.



> 1>------ Build started: Project: Demo, Configuration: Debug Win32 ------
> 1>Compiling...
> 1>Demo.cpp
> 1>c:\users\roman\desktop\v02\ddutil.h(12) : fatal error C1083: Cannot open include file: 'd3d.h': No such file or directory
> ...



Ist das DirectX SDK nicht abwärtskompatibel oder mach ich etwas anderes falsch?
Wenn ich die fehlenden Header-Dateien aus dem Internet runterlade bekomm ich wieder andere Fehlermeldungen. Bis jetzt hab ich es nicht hinbekommen, dass das Programm läuft.

Ich benutzte VS2008 mit WinVista.



Gruß


----------



## Anbrix (19. Juni 2010)

Du musst Visual Studio noch sagen, wo es deine Headerfiles zu finden hat =)

Gebe dazu beim #include den vollständigen Pfad an, oder füge in dein Projekteinstellungen die nötigen Include/Lib Verzeichnisse hinzu.


----------



## Raven280438 (19. Juni 2010)

Hi,

das hat die Installation des SDK schon automatisch gemacht.


Gruß


----------



## Anbrix (19. Juni 2010)

Wäre mir neu, dass dies der Fall ist. Ich mein, es ist ne Weile her, doch meinen Erinnerungen zu folge, lässt sich das SDK irgendwo hin_entpacken_, und nicht automatisch ins VS include Verzeichnis.
Die Compilerfehlermeldung spricht ja auch dafür, es sei denn, du hast mit " und nicht < > includiert


----------



## Raven280438 (19. Juni 2010)

Hi,

ich hab nochmal nachgesehn, die Verzeichnisse von "Executable Files", "Include Files" und "Library Files" sind richtig ein den VS-Optionen ganz oben gesetzt.
In den Projektoptionen sind beim Linker die "Additional Dependencies" auf die lib Dateien gesetzt, die im Buch angegeben sind.

Wenn ich die Header-Dateien runtergeladen habe, hab ich sie im Quellcode natürlich mit "" anstatt <> eingebunden und sie ins Projekt-Verzeichnis gelegt  



Gruß


----------



## sheel (19. Juni 2010)

Du hast ein paar Header des SDK in einen anderen Ordner kopiert und den Rest im alten gelassen?
Das kann ja nicht gutgehen.
Lass das SDK vollständig

Und das DX-SDK, das ich auf dem Computer hab, hat jedenfalls keine Compileroptionen selber eingestellt.


----------



## Raven280438 (19. Juni 2010)

Hi,

für alle die das Buch nicht haben hab ich das Projekt mal hochgeladen:
V02.zip

Ich hab es unter VS2008 und WinVista mit DX 10 SDK nicht zum laufen bekommen 
Kann mir jemand einen Hinweis geben?

Gruß


----------



## Raven280438 (21. Juni 2010)

Hi,

kann mir niemand sagen, worin das Problem liegt?



Gruß


----------



## deepthroat (21. Juni 2010)

Raven280438 hat gesagt.:


> Hi,
> 
> kann mir niemand sagen, worin das Problem liegt?


Das Problem ist doch relativ klar und eindeutig: der Compiler findet die Headerdateien nicht.

In welchem Verzeichnis befindet sich die d3d.h denn auf deinem Rechner? Dieses Verzeichnis mußt du zu den Additional Include Directories hinzufügen wie Anbrix bereits sagte.

Gruß

PS: Und die nervigen Warnungen kannst du in den Projekteinstellungen unter DisableSpecificWarnings abstellen.


----------



## Raven280438 (21. Juni 2010)

Hi,

danke für die Antwort.

Ich hab das DirectX 10 SDK im VS verlinkt, ich bin davon ausgeganden, dass da die d3d.h drin ist.
Ich bin grad nicht zu hause und kann das nicht prüfen.
Heut abend guck ich mal nach.


Gruß


----------



## Matthias Reitinger (21. Juni 2010)

Hallo,

das aktuelle DX-SDK enthält diese Header nicht. Wenn du unbedingt mit DirectX 8 entwickeln willst, dann installiere doch einfach das entsprechende SDK von der Buch-CD. Da sind dann auch garantiert die richtigen Header dabei.

Grüße,
Matthias


----------



## Raven280438 (21. Juni 2010)

Hi,

wenn ich DX8 benutze kommt wieder eine Menge anderer Fehler:



> 1>------ Build started: Project: Demo, Configuration: Debug Win32 ------
> 1>Compiling...
> 1>Demo.cpp
> 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
> ...




Gruß


----------



## sheel (21. Juni 2010)

Was includest du denn alles in deinen Quelltext?


----------



## Raven280438 (22. Juni 2010)

Hi,

ich hab das Program 1 zu 1 so übernommen, wie ich es oben verlinkt habe.


----------



## deepthroat (22. Juni 2010)

Hi.

Hast du denn alle Updates für VS 2008 installiert?

Ansonsten schau mal hier: http://www.codeguru.com/forum/showthread.php?t=426625
und hier: http://www.gibsontang.com/?cat=13

Gruß


----------



## Raven280438 (22. Juni 2010)

Hi,

super, der 2. Link hats gebracht 



Gruß


----------



## Raven280438 (22. Juni 2010)

Hi,

ich bin jetzt etwas weiter gekommen, und hab ein neues Problem:

Für alle folgenden Programme auf der Buch-CD werden Microsoft-Dateien, die auf der CS sind, eingebunden.

dxutil.h, dsutil.h usw.

Diese Dateien sind aber fehlerhaft, ich bekomm beim compilieren sehr viele Fehler.
Im Internet hab ich zu den Dateien nicht gefunden.

Hier ein Auszug:


> 1>c:\users\roman\documents\visual studio 2008\projects\ultris\ultris\dxutil.h(85) : error C2146: syntax error : missing ';' before identifier 'DXUtil_Trace'
> 1>c:\users\roman\documents\visual studio 2008\projects\ultris\ultris\dxutil.h(85) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
> 1>c:\users\roman\documents\visual studio 2008\projects\ultris\ultris\dxutil.h(85) : error C2086: 'int VOID' : redefinition
> 1>        c:\users\roman\documents\visual studio 2008\projects\ultris\ultris\dxutil.h(72) : see declaration of 'VOID'
> ...




Was kann ich hier machen?


Gruß


----------



## deepthroat (23. Juni 2010)

Hi.

Anscheinend ist weder FLOAT, noch VOID definiert. Hast du denn die windows.h zuerst eingebunden?

Gruß


----------



## Raven280438 (23. Juni 2010)

Hi,

kann es an einer alten Version des Windows-SDK liegen?



> c:\program files\microsoft sdks\windows\v6.0a\include\winerror.h


Wie ich an der Pfadangabe sehe, wird Windwos SDK Version 6 benutzt. Ist das die neuste? Ich bin grad nicht zuhause und kann nicht die neuste SDK runterladen.


----------



## deepthroat (23. Juni 2010)

Raven280438 hat gesagt.:


> kann es an einer alten Version des Windows-SDK liegen?
> 
> Wie ich an der Pfadangabe sehe, wird Windwos SDK Version 6 benutzt. Ist das die neuste? Ich bin grad nicht zuhause und kann nicht die neuste SDK runterladen.


Nein, das neueste ist SDK 7. Du verwendest die Version die zusammen mit dem Visual Studio installiert wurde. Das sollte also alles wunderbar zusammenarbeiten.

Gruß


----------



## Raven280438 (23. Juni 2010)

Hi,

ich hatte vorher VisualStudio 6.0 installiert, was unter WinVista aber nicht läuft. Vielleicht kommt es daher.
Wenn ich zuhause bin lad ich mir WindowsSDK7 runter und probiere es nochmal.


Gruß


----------



## deepthroat (23. Juni 2010)

Raven280438 hat gesagt.:


> Hi,
> 
> ich hatte vorher VisualStudio 6.0 installiert, was unter WinVista aber nicht läuft. Vielleicht kommt es daher.


Vermutlich nicht. Die SDKs die mit einem Studio installiert werden haben ein "a" angehängt:

Visual Studio 2008 => SDK 6.0a
Visual Studio 2010 => SDK 7.0a

Welches SDK beim Visual Studio 6 dabei war weiß ich nicht, vermutlich SDK 5.


Raven280438 hat gesagt.:


> Wenn ich zuhause bin lad ich mir WindowsSDK7 runter und probiere es nochmal.


Tu was du nicht lassen kannst. Es gibt aber evtl. Schwierigkeiten das Studio zu überreden dann auch wirklich das 7er SDK zu verwenden.

Gruß


----------



## Raven280438 (23. Juni 2010)

Hi,

woran kann es denn sonst noch liegen? Ich bin langsam am verzweifeln ;(


----------



## deepthroat (23. Juni 2010)

Raven280438 hat gesagt.:


> Hi,
> 
> woran kann es denn sonst noch liegen? Ich bin langsam am verzweifeln ;(


Du hast meine Frage nicht beantwortet...


----------



## Raven280438 (23. Juni 2010)

Hi,

du meinst wegen der windows.h?

Wenn ich mich recht entsinne sollte sie in der dxutil.h und dsutil.h mit drinstehn.
Sicher bin ich mir nicht, ich schau nach sobald ich zuhause bin.

Ich hab halt ein Problem damit, dass ich die Version 1zu1 von der Buch-CD übernommen habe und sie trotzdem nicht läuft. Auf dieser Version bauen alle Folgenden auf. 


Gruß


----------



## Raven280438 (23. Juni 2010)

Hi,

ich einer Datei hat wirklich #include <windows.h> gefehlt 
Danke für die Hilfe.


Gruß


----------

