VisualStudio2005(?)あたりからDirectShow環境はPlatformSDKからWindowsSDKに移行されたようです。VisualStudio2008 Express EditionとStandard Editionともに環境構築したので備忘録としてここに記載しておきます。
2011/3/22更新
本記事の元サイトがリンク切れとなってしまっていたので、修正します。OSはWindowsXP SP3、Windows SDK+DirectShow環境構築しました。
DirectShowの環境構築
DirectShowとDirectXのダウンロード
Windows SDK for Windows Server 2008 and .NET Framework 3.5をダウンロード&インストール
DirectX環境は「DirectXディベロッパー センター」のページから「DirectX SDK (June 2010)」をダウンロード&インストール
環境変数の設定
「すべてのプログラム」-「マイコンピュータ」-「プロパティ」-「詳細設定」-「環境変数」を開き、システム環境変数に以下を追加します。
- 変数名:WindowsSdkDir
- 変数値:「C:\Program Files\Microsoft SDKs\Windows\v6.1」
VisualStudioの設定
VisualStudio2008を開き、「ツール」-「オプション」-「プロジェクトおよびソリューション」-「VC++ ディレクトリ」にて以下設定を追加します。
- 「インクルードファイル」
$(WindowsSdkDir)\include
$(WindowsSdkDir)\Samples\Multimedia\DirectShow\Common - 「実行可能ファイル」
$(WindowsSdkDir)\bin - 「ライブラリファイル」
$(WindowsSdkDir)\lib
「C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses」のbaseclasses.slnを開きバッチビルド
「C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses」
配下の各フォルダにstrmbasd.libが作成されるので、
「C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses」
にコピーしておきます。
以上でDirectShowの環境構築は終わりです。
DirectShowを使ったプロジェクト
VisualStudio2008で「新規プロジェクト」を作成する際の設定を記載します。
VisualStudioの設定
「プロジェクト」-「プロパティ」-「構成プロパティ」を開き以下追記します。
- 「C/C++」-「全般」-「追加のインクルードディレクトリ」
“$(DXSDK_DIR)\Include\x86\”
“$(WindowsSdkDir)\Samples\Multimedia\DirectShow\BaseClasses” - 「リンカ」-「全般」-「追加のライブラリディレクトリ」
“$(DXSDK_DIR)\Lib\x86\;”
“$(WindowsSdkDir)\Samples\Multimedia\DirectShow\BaseClasses” - 「リンカ」-「入力」-「追加の依存ファイル」
dxerr.lib dxguid.lib d3dx9d.lib d3dx10d.lib d3d9.lib winmm.lib strmiids.lib strmbasd.lib
qedit.hをインクルードする場合は、以下追記する必要があるようです。
- #define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__
#include <qedit.h>
エラー対応
「C:\Program Files\Microsoft SDKs\Windows\v6.1\include\qedit.h(498) : fatal error C1083: include ファイルを開けません。’dxtrans.h’: No such file or directory」
// 注:最新SDKではDirectShowの仕様変更対応の為、qedit.hに以下の編集を行わ なければビルドできない。
// 498行目はライン全体のコメントアウト、その他はIDXEffect基底クラスから の派生を定義しない為のライン途中からのコメントアウト
// qedit.h 498: //#include “dxtrans.h”
// qedit.h 837: IDxtCompositor //: public IDXEffect
// qedit.h 1151: IDxtAlphaSetter //: public IDXEffect
// qedit.h 1345: IDxtJpeg //: public IDXEffect
// qedit.h 1735: IDxtKey //: public IDXEffect
解決方法の参照元はこちら。
私の環境ではVC2008 ExpressEdition / VC2008 StanderdEditionともに動作確認できました。
ほんとですね・・・
ウィキペディアが古いのですね。
お邪魔しました~
私もまだまだ勉強中です。VS2008になってからはDirectShowの環境構築は幾分楽になっています。