基本環境

まず,環境はMicrosoft DirectX 9.0 SDK (February 2005)であり,VisualStudio2003がインストールされているとする.
また,それぞれのインストールパスはデフォルトパスとする.

PlatformSDKのセットアップ

Microsoftサイトから抜粋.
DirectX 9.0 SDK Update (April 2005) 以降、全ての DirectShow コンポーネント (ヘッダー、ライブラリ、ユーティリティ、ツール、サンプル) が取り除かれています.DirectShow を必要とするアプリケーションを開発する場合には、Platform SDK (April 2005 - Windows Server 2003 SP1) を使うことを推奨します。
とのこと.このPlatformSDKがなかなかなかなかなかなかなか見つからない.
検索エンジンにもひっかからない.いい加減にして欲しい.
http://www.microsoft.com/downloads/details.aspx/FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
ここからダウンロードし,インストールする.
インストールは以降の作業でのリンカエラー,コンパイルエラーを防止するため,とりあえず,バカっぽいが全部インストールする.



DirectShowのデバッグライブラリのコンパイル

ここが大変.
まず,ふつうにnmakeコマンドでメイクすると,エラーがでる.
おそらく,これはmakefileのライブラリファイルのパスの設定が悪いためなのだが,個々のmakefileをすべて設定するのは面倒くさすぎる.これは,おそらく対策があるのだろうが,sonsonは,makefileに詳しくないので,とりあえず場当たりの対策でコンパイルを試みる.


マイコンピュータの環境変数設定で,
INCLUDE
C:/Program Files/Microsoft Platform SDK/Include;
および,
LIB
C:/Program Files/Microsoft Platform SDK/Lib;
をセットする.
しかし,最新のPlatformSDKは,ATLのバージョンが古い.このため,これに含まれるatlbase.hを利用すると,
fatal error LNK1104: cannot open file 'atlthunk.lib'
ここで,


C:/Program Files/Microsoft Platform SDK/Include/atl/
C:/Program Files/Microsoft Platform SDK/Include/srt/
C:/Program Files/Microsoft Platform SDK/Include/mfc/
ではなく,VisualStudioの各インクルードパス,ライブラリパスを環境変数にセットする.
あるいは,この古いatlbase.hを利用したい場合は,atlbase.hの#pragmaを調整する.
C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/atlmfc/include
atlbase.h

//eliminated 2005/09/21
//#pragma comment(lib, "atlthunk.lib")
のようにコメントアウトし,コンパイルする.


最後に
C:/Program Files/Microsoft Platform SDK/Samples/Multimedia/DirectShow/BaseClasses
パスに移動し,nmakeでstrmbasd.libをビルドする.
最後にこれで作成されたstrmbasd.libのパスを今まで使っていたDirectShowのBaseClassesのところに割り当てる.

問題点

今までのPlatformSDKとバージョンがむちゃくちゃになっている点が問題.
この辺をちゃんと整理すれば,もっときれいにできるはず.
つーか,こんなにコロコロライブラリの仕様変えないでよ・・・・・.

課題

実は,この設定では,他のサンプルプログラムがメイクできない.
これについては,以後何とかする予定である.
また,すべての設定したパスも戻しておいた方がいい.
後で何が起こるかわからない.
一応,動作確認として,ここで公開しているフィルタとDirectShowを利用したプログラムをメイクしてみたが,大丈夫だった.
ただ,DirectShowを利用したものには,かなり多重リンカで警告がでる.なんとかしたい.おそらく,基本ライブラリ(たとえば,freeとか?)が重複している.

結論

とりあえず,動くことは動く.
ただし,安定環境のためにも,従来のライブラリを使った方が・・・・いいかもしれない.
この環境構築は,以降PlatformSDKのDirectShow以外が使えなくなったときの布石として位置づけよう.