« アルファ付きムービーの再生 | メイン | 循環参照でメモリリーク »

2007年04月13日

吉里吉里 ムービー拡張日誌2:: krmovie.dll のビルド手順

    

・DirectShow は DirectX から Platforma SDK に移動したようです。 後日そちらで手順を書き換えます。参考1参考2 (2007/05/06)
・DirectX 9.0 SDK Extra のコピー位置がおかしかったので修正(2007/05/03)

PC を 替えてビルドできなくなっていたので、krmovie.dll をビルドするにあたって手順を整理。

krmovie.dll のビルドには次の4つが必要。

・Visual Studio.NET 2003
・DirectX 9.0 SDK
・DirectX 9.0 SDK Extra
・Windows Media Format 9 Series SDK (9.5)

Visual Studio は上位バージョンでも大丈夫だと思うが試していない。
下位バージョンの場合は、プロジェクトファイルを作る必要がある。
Visual C++ 2005 Express Edition は試していないが、ATLが付いていないので、たぶんビルドできないと思う。
でも、ATLはそんなに大したものは使っていないはずなので、移植しようと思えば出来るはず。

DirectX 9.0 は、リポジトリのプロジェクトでは、DirectX 9.0 SDK Update - (October 2004)DirectX 9.0 SDK Update (October 2004) Extras の組み合わせになっている(一番初めはこの組み合わせだったので)。
最新の DirectX SDK - February 2007DirectX 9.0 SDK Update (February 2005) Extras の組み合わせでもビルドできたので、こちらでも大丈夫だと思われる。

Windows Media Format 9 Series SDK は、たぶん9.5でも大丈夫なはず。
なぜか日本語のページはリンク切れだったので、ここからダウンロードする必要がある。

DirectX 9.0 SDK Extra は、展開して出来たDirectShowなどのフォルダを"C:\Program Files\Microsoft DirectX SDK (February 2007)\Samples\C++"にコピーする。
DirectX 9.0 SDK Extra は、展開して出来たDirectShowの中身を"C:\Program Files\Microsoft DirectX SDK (February 2007)\"にコピーする。

以上で環境は整う。


次にビルド。
まず、DirectShow の BaseClasses をビルドする必要がある。
"C:\Program Files\Microsoft DirectX SDK (February 2007)\Samples\C++\DirectShow\Samples\C++\DirectShow\BaseClasses\baseclasses.vcproj"
を開く。

"C:\Program Files\Microsoft DirectX SDK (February 2007)\Samples\C++\DirectShow\BaseClasses\baseclasses.vcproj"
を開く。
プロジェクトの設定の C/C++ の コード生成 のランタイムライブラリがマルチスレッドDLLになっているので、これをマルチスレッドにする。
こうしないと msvcrXX.dll などが必要になってしまう。
そして、krmovie.dll は マルチスレッド にしているので、リンク時にLIBCMT.LIB をはずしてくれとか良くわからないエラーが出て困る。
Debug 以外にも Release などすべてマルチスレッド DLL ではないほうに設定してから、ビルドする。
これで strmbasd.lib と strmbase.lib が出来る。
これができれば、以降はこれを使うことになるので、この辺りのビルドは不要になる。

次に krmovie.vcproj 。
DirectShow関係のパスが October 2004 になっているので、これをインストールしてあるものにあわせる。
後、Windows Media Format 9 Series SDK のインクルードパスも追加する。
今回ビルドしたら、なぜか wsprintfW でエラーになったので、これを swprintf に替えた。(参考)
後はビルドすれば出来上がり。

krmovie.dll は DirectX や WMV に 依存しているので少し面倒だけど、一度入れてしまえばおしまいなので面倒なのは最初だけ。



投稿者 Takenori : 2007年04月13日 12:46




comments powered by Disqus
Total : Today : Yesterday : なかのひと