Skip to main content.

(2014/07/09)このサイトは更新を終了しました。今しばらく公開は続けたいと思いますが古くなっている情報もありますのでご注意下さい。新しいサイトはこちらです。引き続き株式会社インデペンデンスシステムズ横浜は鋭意営業中です。

Saturday, July 07, 2012

DirectShowの開発環境 2012年7月版(その3)qedit.hについて

WindowsSDK V7.1でDirectShowの開発を行う際に、qedit.hがSDKに存在していなくてVC++でコンパイルが出来ない場合がある問題についてです。

DirectShowの実体は、Windowsのディレクトリに複数のDLL等のファイルとして存在しているようです。その一つにqedit.dllというのがあります。ここに存在するDirectShowのインターフェースの機能を利用する際に、VC++では、通常ヘッダファイルをインクルードしてという手順になると思いますが、その際のヘッダフィル qedit.h が、WindowsSDK v7.0Aからは含まれていないようです。(※WindowsSDK v6.0A、v6.1Aには存在します。)理由は分かりませんが、とりあえずコンパイルして、動かしてみたいという場合の方法についてです。

Windows SDK v6.1の取得
デフォルトではSDKは、C:\Program Files\Microsoft SDKs\Windows 配下にインストールされているかと思いますので、v6.1あるいは、v6.0がインストールされているかどうか確認します。インストールされていなければ、現時点では、v6.1は、以下のページからインストーラがダウンロード出来るようです。
Windows SDK for Windows Server 2008 and .NET Framework3.5

使用するSDKの確認
Visual Studio 2010のVC++では、プロジェクトごとに使用するSDKの設定が出来ます。そこで、ビルド対象のプロジェクトでどのSDKを利用するか決めます。


qedit.hの編集
上記のWindows SDK v6.1(またはv6.0A)のqedit.hを編集します。(単純なテキストの比較では、v6.1とv6.0Aのqedit.hは同じでした。)その前に、Windows SDK v7を使用する場合は、qedit.hをv7のIncludeフォルダへコピーします。

以下の箇所を編集します。以下は、こちらからの引用です。

//#include "dxtrans.h" -- Line 498

// IDxtCompositor //: public IDXEffect -- Line 837
// IDxtAlphaSetter //: public IDXEffect -- Line 1151
// IDxtJpeg //: public IDXEffect -- Line 1345
// IDxtKey //: public IDXEffect -- Line 1735


まずは、dxtrans.hをインクルードしている行を削除(コメントアウト)して、ビルドエラーを見ながら関連する部分を削除しました。そうすると、無事にビルドが出来ました。

Windowsプログラミング関連記事