{"id":131,"date":"2009-10-17T19:57:55","date_gmt":"2009-10-17T17:57:55","guid":{"rendered":"http:\/\/gate.rdue.net\/mygate\/blog\/?p=131"},"modified":"2009-10-17T19:57:55","modified_gmt":"2009-10-17T17:57:55","slug":"codeblocks-und-directx","status":"publish","type":"post","link":"https:\/\/duerrenberger.dev\/journal\/2009\/10\/17\/codeblocks-und-directx\/","title":{"rendered":"Code::Blocks und DirectX"},"content":{"rendered":"<p>F\u00fcr meine Maturarbeit setzte ich mich mit DirectX und C++ auseinander. Da ich <a href=\"http:\/\/www.codeblocks.org\/\" target=\"_blank\">Code::Blocks<\/a> 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.<\/p>\n<p>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\u00f6sungen. Probierte sogar Programme mit der Visual C++ 2008 Express Edition zum Laufen zu bringen, jedoch auch erfolglos.<\/p>\n<p>Das Problem lag meistens am Linker, welcher immer irgendwelch \u201ckomischen\u201d Fehlermeldungen zur\u00fcckgab. 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.<\/p>\n<p>Nach sehr langem hin und her Probieren und Suchen, fand ich das Problem und zwar hatte ich die \u201cgdi32\u201d Library der Windows Plattform SDK nicht eingebunden, welche irgendwie auch noch verwendet wurde.<\/p>\n<p>Da es sehr viele Code::Block Nutzer \u00e4hnliche Probleme gemeldet haben und ich nicht alleine an meiner Maturarbeit arbeite, habe ich eine kleine \u00dcbersicht erstellt, wie bei mir zumindest eines meiner Programme funktioniert hat.<\/p>\n<blockquote>\n<p>Wie benutzt ich Code::Blocks und die DirectX     <br \/>============================================ <\/p>\n<p><p>Was brauch ich alles?       <br \/>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;        <br \/>&#8211; <a href=\"http:\/\/www.codeblocks.org\/downloads\/5\" target=\"_blank\">Code::Blocks<\/a>        <br \/>&#8211; <a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?FamilyID=b66e14b8-8505-4b17-bf80-edb2df5abad4&amp;displaylang=en\" target=\"_blank\">Microsoft DirectX SDK (August 2009)<\/a>        <br \/>&#8211; <a href=\"http:\/\/download.my-gate.net\/VCToolkitSetup.exe\" target=\"_blank\">Microsoft Visual C++ Toolkit 2003<\/a>        <br \/>&#8211; <a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&amp;displaylang=en\" target=\"_blank\">Microsoft Windows Plattform SDK<\/a><\/p>\n<p><u>Installation         <br \/><\/u>        <br \/>Ich habe alles in die folgenden Verzeichnisse installiert und werde mich auch auf diese Beziehen: <\/p>\n<\/p>\n<p>Code::Blocks&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; -&gt; C:ProgrammeCodeBlocks     <br \/>Microsoft DirectX SDK&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; -&gt; C:ProgrammeMicrosoft DirectX SDK (August 2009)      <br \/>Microsoft Visual C++ Toolkit 2003&#160;&#160;&#160; -&gt; C:ProgrammeMicrosoft Visual C++ Toolkit 2003      <br \/>Microsoft Windows Plattform SDK&#160;&#160;&#160; -&gt; C:ProgrammeMicrosoft Plattform SDK <\/p>\n<p>Nach der Installation sollte man sich ein wenig mit der IDE Code::Blocks vertraut machen und ausprobieren. <\/p>\n<p><u>DirectX Wizard<\/u>      <\/p>\n<p>Tollerweise hat Code::Blocks bereits ein Wizard f\u00fcr DirectX Projekte integriert, nur leider funktionierte das bei mir nicht und ich erhielt immer die Meldung: &quot;The path seems valid, but there are no DirectX files&#8230;&quot; o.\u00e4. <\/p>\n<p><u>DirectX und Code::Blocks<\/u>      <\/p>\n<p>Nach dem das Wizard erfolgreich abgest\u00fcrzt ist, m\u00fcssen wir das Ganze halt anderst angehen.      <br \/>Es gibt zwei M\u00f6glichkeiten, die erste ist wohl etwas die einfachere: <\/p>\n<p>1.     <br \/> &#8211; Erstelle ein Windows Projekt mit dem Wizard (&quot;Win32 GUI project&quot;).      <br \/> &#8211; W\u00e4hle dabei &quot;Frame based&quot; aus.      <br \/> &#8211; Dann deine Destionantion, wo du dein Projekt abspeichern m\u00f6chtest mit dem Projektnamen.      <br \/> &#8211; Als Compiler musst du nun &quot;Microsoft Visual C++ Toolkit 2003&quot; ausw\u00e4hlen, die anderen Felder kann man unber\u00fchrt lassen.      <br \/> &#8211; Als n\u00e4chstest fragt er nach Installationsverzeichnis der SDK. (C:ProgrammeMicrosoft Platform SDK)      <br \/> &#8211; Nun hat man ein neues Projekt, welches scho compiliert und ausgef\u00fchrt werden kann.      <br \/> &#8211; Jetzt muss man noch alle Libraries richtig angeben, damit der Compiler und Linker auch weiss wo was liegt.      <br \/> &#8211; Dazu geht man auf Project-&gt;Build options&#8230;      <br \/> &#8211; Dort w\u00e4hlt man nicht Debug oder Release sondern den Projektname, welcher \u00fcbergeordnet ist.      <br \/> &#8211; Dann wechselt man zum Tab &quot;Search directories&quot;.      <br \/> &#8211; Unter Compiler sollte jetzt stehn bzw. hinzugef\u00fcgt werden (ohne -):      <br \/>&#160;&#160; &#8211; $(#psdk.include)      <br \/>&#160;&#160; &#8211; $(#dx.include)&#160;&#160;&#160;&#160; jenachdem wird auch der Komplette Pfad ben\u00f6tigt      <br \/> &#8211; Unter Linker kommen dann folgende Eintr\u00e4ge:      <br \/>&#160;&#160; &#8211; $(#psdk.lib)      <br \/>&#160;&#160; &#8211; $(#dx.lib)&#160;&#160;&#160;&#160; jenachdem wird auch der Komplette Pfad ben\u00f6tigt      <br \/> &#8211; Dann wechselt man zum Tab &quot;Linker settings&quot; und f\u00fcgt dort die Folgenden Libraries ein:      <br \/>&#160;&#160; &#8211; gdi32      <br \/>&#160;&#160; &#8211; user32      <br \/>&#160;&#160; &#8211; kernel32      <br \/>&#160;&#160; &#8211; d3d9.lib      <br \/>&#160;&#160; &#8211; d3dx9.lib      <br \/>&#160;&#160; &#8211; DxErr.lib      <br \/> &#8211; Beachte, dass .lib entweder klein geschrieben oder ganz weggelassen wird!      <br \/> &#8211; Zur Kontrolle sollte oben &quot;Mircosoft Visual C++ Toolkit 2003&quot; eingestellt sein.      <br \/> &#8211; Fertig!      <br \/>2.      <br \/> &#8211; Erstelle ein leeres Projekt.      <br \/> &#8211; Dann deine Destionantion, wo du dein Projekt abspeichern m\u00f6chtest mit dem Projektnamen.      <br \/> &#8211; Als Compiler musst du nun &quot;Microsoft Visual C++ Toolkit 2003&quot; ausw\u00e4hlen, die anderen Felder kann man unber\u00fchrt lassen.      <br \/> &#8211; Nun hat man ein leeres Projekt.      <br \/> &#8211; F\u00fcge eine neue leere Datei hinzu, und bennene sie &quot;main.cpp&quot; oder nach belieben.      <br \/> &#8211; Jetzt muss man noch alle Libraries richtig angeben, damit der Compiler und Linker auch weiss wo was liegt.      <br \/> &#8211; Dazu geht man auf Project-&gt;Build options&#8230;      <br \/> &#8211; Dort w\u00e4hlt man nicht Debug oder Release sondern den Projektname, welcher \u00fcbergeordnet ist.      <br \/> &#8211; Dann wechselt man zum Tab &quot;Search directories&quot;.      <br \/> &#8211; Unter Compiler sollte jetzt stehn bzw. hinzugef\u00fcgt werden (ohne -):      <br \/>&#160;&#160; &#8211; $(#psdk.include)      <br \/>&#160;&#160; &#8211; $(#dx.include)&#160;&#160;&#160;&#160; jenachdem wird auch der Komplette Pfad ben\u00f6tigt      <br \/> &#8211; Unter Linker kommen dann folgende Eintr\u00e4ge:      <br \/>&#160;&#160; &#8211; $(#psdk.lib)      <br \/>&#160;&#160; &#8211; $(#dx.lib)&#160;&#160;&#160;&#160; jenachdem wird auch der Komplette Pfad ben\u00f6tigt      <br \/> &#8211; Dann wechselt man zum Tab &quot;Linker settings&quot; und f\u00fcgt dort die Folgenden Libraries ein:      <br \/>&#160;&#160; &#8211; gdi32      <br \/>&#160;&#160; &#8211; user32      <br \/>&#160;&#160; &#8211; kernel32      <br \/>&#160;&#160; &#8211; d3d9.lib      <br \/>&#160;&#160; &#8211; d3dx9.lib      <br \/>&#160;&#160; &#8211; DxErr.lib      <br \/> &#8211; Beachte, dass .lib entweder klein geschrieben oder ganz weggelassen wird!      <br \/> &#8211; Zur Kontrolle sollte oben &quot;Mircosoft Visual C++ Toolkit 2003&quot; eingestellt sein.      <br \/> &#8211; Fertig!<\/p>\n<\/blockquote>\n<p>&#160;<\/p>\n<p>So ich w\u00fcnsch euch nun viel Spass bei DirectX programmieren! =)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>F\u00fcr 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, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,10,11,14],"tags":[68,82,99,181,226,227,246,292,402],"class_list":["post-131","post","type-post","status-publish","format-standard","hentry","category-pc","category-rl","category-school","category-windows","tag-c","tag-codeblocks","tag-directx","tag-ide","tag-libraries","tag-library","tag-microsoft","tag-programmierung","tag-windows"],"_links":{"self":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/comments?post=131"}],"version-history":[{"count":0,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/131\/revisions"}],"wp:attachment":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/media?parent=131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/categories?post=131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/tags?post=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}