DirectShow フィルタのビルド
DirectShow フィルタの実装には DirectShow 基底クラスを使うことを推奨する。基底クラスを使ってビルドするには、「ビルド環境の設定」で説明している手順に加え、次の手順を実行する。
基底クラス ライブラリをビルドする。このライブラリは、SDK ルート ディレクトリの下にある Samples\Multimedia\C++\BaseClasses ディレクトリに置かれている。このライブラリには、2 つのバージョンがある。リテール バージョン (Strmbased.lib) とデバッグ バージョン (Strmbasd.lib) である。
ヘッダー ファイル Streams.h をインクルードする。
__stdcall 呼び出し規則を使う。
マルチスレッドの C ランタイム ライブラリ (必要に応じてデバッグ バージョンまたはリテール バージョン) を使う。
DLL 関数をエクスポートする定義ファイル (.def) をインクルードする。定義ファイルの例を次に示す。出力ファイルの名前は MyFilter.dll であると想定する。
LIBRARY MYFILTER.DLL EXPORTS DllMain PRIVATE DllGetClassObject PRIVATE DllCanUnloadNow PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATE
次の lib ファイルにリンクする。
デバッグ ビルド Strmbasd.lib、Msvcrtd.lib、Winmm.lib リテール ビルド Strmbase.lib、Msvcrt.lib、Winmm.lib リンカの設定で [デフォルト ライブラリを無視] オプションを選択する。
ソース コードの DLL エントリ ポイントを以下のとおり宣言する。
extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID); BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved) { return DllEntryPoint((HINSTANCE)(hModule), dwReason, lpReserved); }
以前のバージョン
DirectShow 9.0 より前の基底クラス ライブラリのバージョンでは、次の処理も行う必要がある。
- デバッグ ビルドでは、プリプロセッサ フラグ DEBUG を定義する。
この手順は、DirectShow 9.0 以降で利用できる基底クラス ライブラリのバージョンでは必要ない。
参照