Code::Blocks und DirectX

Für meine Maturarbeit setzte ich mich mit DirectX und C++ auseinander. Da ich Code::Blocks als IDE beim Programmieren von C++ bevorzuge, wollte ich auch meine DirectX Programme mit dieser IDE verwenden, was sich aber gar nicht als so einfach herausstellte.

Die IDE hat tollerweise ja direkt ein DirectX Wizard mitgeliefert bekommt, wollte ich dieses verwenden, welches sich dann schnell nach einer Fehlermeldung als nicht verwendbar herausstellte. Ich suchte wohl mehrere Stunden im Internet nach funktionierenden Lösungen. Probierte sogar Programme mit der Visual C++ 2008 Express Edition zum Laufen zu bringen, jedoch auch erfolglos.

Das Problem lag meistens am Linker, welcher immer irgendwelch “komischen” Fehlermeldungen zurückgab. Ein Linker Error tritt eigentlich meist dann ein, wenn mit Libraries gearbeitet wird, was im Falle von DirectX auch so ist, nur habe ich eigentlich alle DirectX Libraries, welche ich verwenden wollte eingebunden.

Nach sehr langem hin und her Probieren und Suchen, fand ich das Problem und zwar hatte ich die “gdi32” Library der Windows Plattform SDK nicht eingebunden, welche irgendwie auch noch verwendet wurde.

Da es sehr viele Code::Block Nutzer ähnliche Probleme gemeldet haben und ich nicht alleine an meiner Maturarbeit arbeite, habe ich eine kleine Übersicht erstellt, wie bei mir zumindest eines meiner Programme funktioniert hat.

Wie benutzt ich Code::Blocks und die DirectX
============================================

Was brauch ich alles?
———————
Code::Blocks
Microsoft DirectX SDK (August 2009)
Microsoft Visual C++ Toolkit 2003
Microsoft Windows Plattform SDK

Installation

Ich habe alles in die folgenden Verzeichnisse installiert und werde mich auch auf diese Beziehen:

Code::Blocks                                        -> C:ProgrammeCodeBlocks
Microsoft DirectX SDK                         -> C:ProgrammeMicrosoft DirectX SDK (August 2009)
Microsoft Visual C++ Toolkit 2003    -> C:ProgrammeMicrosoft Visual C++ Toolkit 2003
Microsoft Windows Plattform SDK    -> C:ProgrammeMicrosoft Plattform SDK

Nach der Installation sollte man sich ein wenig mit der IDE Code::Blocks vertraut machen und ausprobieren.

DirectX Wizard

Tollerweise hat Code::Blocks bereits ein Wizard für DirectX Projekte integriert, nur leider funktionierte das bei mir nicht und ich erhielt immer die Meldung: "The path seems valid, but there are no DirectX files…" o.ä.

DirectX und Code::Blocks

Nach dem das Wizard erfolgreich abgestürzt ist, müssen wir das Ganze halt anderst angehen.
Es gibt zwei Möglichkeiten, die erste ist wohl etwas die einfachere:

1.
– Erstelle ein Windows Projekt mit dem Wizard ("Win32 GUI project").
– Wähle dabei "Frame based" aus.
– Dann deine Destionantion, wo du dein Projekt abspeichern möchtest mit dem Projektnamen.
– Als Compiler musst du nun "Microsoft Visual C++ Toolkit 2003" auswählen, die anderen Felder kann man unberührt lassen.
– Als nächstest fragt er nach Installationsverzeichnis der SDK. (C:ProgrammeMicrosoft Platform SDK)
– Nun hat man ein neues Projekt, welches scho compiliert und ausgeführt werden kann.
– Jetzt muss man noch alle Libraries richtig angeben, damit der Compiler und Linker auch weiss wo was liegt.
– Dazu geht man auf Project->Build options…
– Dort wählt man nicht Debug oder Release sondern den Projektname, welcher übergeordnet ist.
– Dann wechselt man zum Tab "Search directories".
– Unter Compiler sollte jetzt stehn bzw. hinzugefügt werden (ohne -):
   – $(#psdk.include)
   – $(#dx.include)     jenachdem wird auch der Komplette Pfad benötigt
– Unter Linker kommen dann folgende Einträge:
   – $(#psdk.lib)
   – $(#dx.lib)     jenachdem wird auch der Komplette Pfad benötigt
– Dann wechselt man zum Tab "Linker settings" und fügt dort die Folgenden Libraries ein:
   – gdi32
   – user32
   – kernel32
   – d3d9.lib
   – d3dx9.lib
   – DxErr.lib
– Beachte, dass .lib entweder klein geschrieben oder ganz weggelassen wird!
– Zur Kontrolle sollte oben "Mircosoft Visual C++ Toolkit 2003" eingestellt sein.
– Fertig!
2.
– Erstelle ein leeres Projekt.
– Dann deine Destionantion, wo du dein Projekt abspeichern möchtest mit dem Projektnamen.
– Als Compiler musst du nun "Microsoft Visual C++ Toolkit 2003" auswählen, die anderen Felder kann man unberührt lassen.
– Nun hat man ein leeres Projekt.
– Füge eine neue leere Datei hinzu, und bennene sie "main.cpp" oder nach belieben.
– Jetzt muss man noch alle Libraries richtig angeben, damit der Compiler und Linker auch weiss wo was liegt.
– Dazu geht man auf Project->Build options…
– Dort wählt man nicht Debug oder Release sondern den Projektname, welcher übergeordnet ist.
– Dann wechselt man zum Tab "Search directories".
– Unter Compiler sollte jetzt stehn bzw. hinzugefügt werden (ohne -):
   – $(#psdk.include)
   – $(#dx.include)     jenachdem wird auch der Komplette Pfad benötigt
– Unter Linker kommen dann folgende Einträge:
   – $(#psdk.lib)
   – $(#dx.lib)     jenachdem wird auch der Komplette Pfad benötigt
– Dann wechselt man zum Tab "Linker settings" und fügt dort die Folgenden Libraries ein:
   – gdi32
   – user32
   – kernel32
   – d3d9.lib
   – d3dx9.lib
   – DxErr.lib
– Beachte, dass .lib entweder klein geschrieben oder ganz weggelassen wird!
– Zur Kontrolle sollte oben "Mircosoft Visual C++ Toolkit 2003" eingestellt sein.
– Fertig!

 

So ich wünsch euch nun viel Spass bei DirectX programmieren! =)

TrackbackPermanent Link

Hinterlasse einen Kommentar