2009年8月5日水曜日

DirectX10のコンパイルではまったこと。。。

本日、久しぶりにそろそろD3D10関連をはじめてみようと思いたちました。(Windows 7とともにD3D11の足音が聞こえ始めてるこの時期にってのもなんですがね。(^^;))
で、とりあえず、最新のDirectX SDK(March 2009)をダウンロードしてきて、コンパイルを実行。。。

で、見事にD3D10の各種サンプルをコンパイルする際にはまってしまいました。。。

最近OSの入れなおしを行い、VS2008の入れ替えや、SDKの整備などを細々と行っていたのですが、そこに抜けがあった模様です。

具体的にはd3dx10Core.hで定義しているGetDesc()で、修飾として使用されているWINAPI_INLINEなるものが解決できずに、コンパイルエラーを催しているといったところです。

WINAPI_INLINEでググってみると以下のフォーラムへの書き込みを見つけました。

DX10 SDK Tutorial 13 will not compile??? - GameDev.Net Discussion Forums


こちらの書き込みだと、定義されているマクロを独自で定義して解決しているといった方法をとっているのですが、今後のソースのメンテとか考えると、ビミョ~。。。

で、この書き込みに、「Platform SDKが古いからみたい」といった情報があったので、新しくWindows SDKをDLしてきて、インストールすることにしました。
Windows 7のリリース前でWindows SDK for Windows 7のRCバージョンが公開されていたのですが、うまくインストールが実施できなかったので、とりあえず、安定版であるWindwos SDK for VISTAを引っ張ってくることに。

インストールを行い、VSのインクルードとライブラリのパス設定を行うことで見事解決できました。
めでたしめでたし。

コンパイルが通ることがわかったので、パス設定を見直してみました。
結局のところ、以前入れたWindows DDKが悪さしていたようで、これより前にパスを設定することで解決しました。多分、同名のヘッダファイルが含まれて悪さをしていたようです。

良かった良かった。