[Tips] 番外編・PlatformSDKによるDirectShowのセットアップ


基本環境

まず,環境は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以外が使えなくなったときの布石として位置づけよう.

 トラックバック

このエントリーのトラックバックURL:
http://son-son.sakura.ne.jp/mt/mt-tb.cgi/119

 コメントを投稿