Visual C++ 2005 Express EditionでDirectShowプログラミング

http://www.geekpage.jp/programming/directshow/
なるサイトを見て、安易にDirectShowプログラミングをしてみようと思ったヒトは挫折するような。


注意)今日の日記には何ら有効な打開策は示されていないと思います。あくまで備忘録です。何かの間違いで今日の日記に飛んできた人は期待せず、ブラウザのBACKボタンを押してください。



なにせ世の中のDirectShowプログラミングサイトでは、上記サイトを含め開発環境の前提がVC++6.0とおります。
ここで、数10パーセントのヒトはあきらめるかも。


少し根気のあるヒトは、無料で結構使えるVisual C++ 2005 Express Editionsしてみようと思ってみるわけ。
■ゼロから始めるVisual C++ 2005入門
http://itpro.nikkeibp.co.jp/article/COLUMN/20061206/256112/?P=1&ST=develop
しかし、これだけだとWin32アプリケーションの開発ができないわけで、再び、あきらめるかも。


もう少し根気のあるヒトは、なんだかWindows ネイティブのアプリケーションを作成する場合は、
Windows Platform SDKなるものが必要で、もろもろ設定が必要だというとこまで行き着くはず。
■Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
・手順 1. Visual C++ 2005 Express Edition をインストールします。
・手順 2. Microsoft Platform SDK をインストールします。
・手順 3. [オプション] ダイアログ ボックスの [プロジェクトとソリューション] セクションで [Visual C++ フォルダ] を更新します。
・手順 4. corewin_express.vsprops ファイルを更新します。
・手順 5. Win32 アプリケーションを生成、ビルドして、指定したパスの動作確認を行います。


あともうちょっと根気のあるヒトは、なんだかなんだか、DirectShowで使うライブラリのビルド
が必要なんでは!?というところに行き着くかも。
■DirectShowの開発をするための準備 第一回
http://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=17
・手順 1. 対象となるOS用のバッチファイルを起動
Windowsの【スタート】→【すべてのプログラム】→【Microsoft Platform SDK for Windows Server 2003 SP1】→【Open Build Environment Window】)
・手順 2. makefileへのパスを通す
(nmake.exeは、platform SDKのbinフォルダの下のものと、visual studio8のvcのbinフォルダの下のもの2種類ありますが、後者にパスを通しました)
・手順 3. BaseClassesのビルド
(cd ???\Microsoft PlatformSDK\Samples\Multimedia\DirectShow\BaseClasses)
(nmeke)


しかしながら、nmakeがうまくいかなかったりします。
あきらめの悪いヒトは、なんとも、ビルドするファイルの修正が必要かもしれないと思ったりします。
DirectX/DirectShowはじめの一歩
http://iislab.ele.kindai.ac.jp/moodle/mod/resource/view.php?id=399

で、OKなハズなんですが.....VisualStudio2005の環境でこの作業を行う場合にちょっと修正が必要らしい.修正点は以下の通り.
「ctlutil.h」の278行目「(long)operator=(long);」
「winutil.cpp」の2104行目「UINT Count」を外に出して、宣言
「outputq.cpp」664行目「long iDone」を外に出して、宣言
「wxdebug.cpp」568行目「static DWORD g_dwLastRefresh = 0;」
この修正を行えば、コンパイルが通るはずです

作者と若干ファイルの構成が違うのに気付くも、その意図を汲み取って修正ほどこす。
が。。。


これで駄目なら普通あきらめますが、意固地なヒトはしつこく調べてみます。
■PlatformSDKのサンプル等のビルド - 教えて!goo
http://oshiete1.goo.ne.jp/qa2255321.html
・最新のPlatform SDK(R2版)をインストールことで問題が解決できる
http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
(このR2版だと、前述サイトの修正点4つのうち3つは修正されていました)
「winutil.cpp」の2104行目あたり、「UINT Count」を外に出して、宣言
「outputq.cpp」664行目あたり、「long iDone」を外に出して、宣言
「wxdebug.cpp」568行目あたり、「static DWORD g_dwLastRefresh = 0;」

⇒が、私は駄目でした。


今日はここまで


●第2回「DirectShowの開発をするための準備
http://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=27
Windows Vista および .NET Framework 3.0 ランタイム コンポーネントMicrosoft Windows Software Development Kit
win2kだけど大丈夫かい。。。。。。。。

Microsoft Windows SDKとは
http://ja.wikipedia.org/wiki/Microsoft_Windows_SDK

DirectXとは
http://ja.wikipedia.org/wiki/DirectX





というか、誰か今日の日記のタイトルページつくっとくれ。