...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

Windows SDK (旧Platform SDK + DirectShow SDK) と DirectX SDK を最新版にアップデート

通例の Microsoft DirectX ダウンロード のページから最新版のDirectX SDKである Microsoft DirectX SDK (Nov 2007) ダウンロード をダウンロードする.
Microsoft DirectX SDK (Nov 2007) をインストールすると,VS2005に自動的にパスが設定された.


Windows Vista™ および .NET Framework 3.0 ランタイム コンポーネント用 Microsoft® Windows® Software Development Kit をダウンロード.
MS Windows SDK をインストールする.
エラーが出てセットアップが開始できない.


しょうがないのでWebインストール版のを試す.
Microsoft® Windows® Software Development Kit Update for Windows Vista を試す.
こちらもサイズが大きいので3時間くらい時間がかかりそう.
そんなにはかからずにちゃんと終了した.


すべてのプログラムに追加された「Integrate Windows SDK with Visual Studio 2005」を実行してVS2005にパスを登録する.
これで旧プロジェクトのビルドに成功した.


しかし,DirectX SDKのパスが消えてしまった.
「Integrate Windows SDK with Visual Studio 2005」を使ってパスを設定すると,一発で設定できる代わりに,事前に設定してあった他のパスが消えてしまうらしい.
今回は消えたパスを手動で追加する.


DirectShowのインストールを始める.
まず,このパスをインクルード先として追加.
C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Multimedia\DirectShow\Common


このプロジェクトをバッチビルド.
C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Multimedia\DirectShow\BaseClasses
ライブラリファイルが4つできる.
プロジェクトはUNICODEビルドするつもりなので,MBCS版ではないデバッグ用のstrmbasd.libとリリース用のstrmbase.libを
C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Multimedia\DirectShow\BaseClasses
に移動する.
そして,このパスをVSのライブラリの方に追加しておく.


デバッグ時はstrmbasd.libを,リリース時はstrmbase.libをリンクするように旧プロジェクトを設定し直す.


昔の環境では,dshowutil.cppとdshowutil.hを複数のプロジェクトで共有することにしていた.
今回もそうする.
旧プロジェクトに追加されているdshowutil.cppとdshowutil.hは古いパスを参照しているので,新しいパスを参照するように訂正する.
共有するので,これらのファイルに変更は加えたくない.
そこで,これらのファイルだけ,プリコンパイル済みヘッダーを使用しないように設定する.


昔から使い倒されてきたqedit.hが使えなくなっているらしい.
なんてことしやがる.
自分で必要なものを定義したヘッダを書く方法が一般的らしい.
qedit.h から少しずつコピペして qedit_withD3D.h を作った.
後でなるべくたくさんの定義を含めた版を作ろう.


ここでビルドしてみたらdshowutil.cppがAnsiビルドされてしまっていた.
プリコンパイル済みヘッダーを使用しないように設定したからか.
そこで dshowutil.cpp をUNICODEビルドするようにプロジェクトを設定(#define UNICODEでもよい).


これで,旧プロジェクト2つ(Win32アプリケーションと,DirectShowアプリケション)が正常にコンパイルできるようになった.
DirectShow以外のDirectXアプリケーションのプロジェクトは持っていないので試してない.

以上.後でwikiにまとめよう.