MSVC WindowsSDK - eiichiromomma/CVMLAB GitHub Wiki

(MSVC) WindowsSDK

PlatformSDK->WindowsSDKらしい?

XPも対応

Windows SDK for VISTAとかなっているのだが、インストール画面ではXP SP2以降としっかり表示されているので、こっちが最新のSDKらしい。 が、現在PlatformSDKで困ってないのでわざわざ移行する必要があるかは未検討。

PlatformSDKからの移行

拾ってきてインストール。 構成はこんな感じ。

VisualC++ 2005 EEがあるのでコンパイラは外す。

VisualC++ 2005 EEの設定

インクルードファイルのディレクトリ、ライブラリファイルのディレクトリの両方でPlatformSDKに関する箇所を削除。

インクルードファイルのディレクトリには

C:\Program Files\Microsoft SDKs\Windows\v6.0\Include
C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\winui\tsfcompart

を追加。

ライブラリファイルのディレクトリには

C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib

を追加。

DirectShow

ビルド

ビルドが簡単になった。

C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Multimedia\DirectShow\BaseClasses

へ移動してbaseclasses.slnを開く。 プロジェクトはRelease_MBCSとDebug_MBCS(マルチバイト対応らしい)を使う。

その後の設定

インクルードファイルのディレクトリに

C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Multimedia\DirectShow\BaseClasses

を追加。 ライブラリファイルのディレクトリに

C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Multimedia\DirectShow\BaseClasses\Debug_MBCS
C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Multimedia\DirectShow\BaseClasses\Release_MBCS

を追加。

サンプルのビルド

コケる場合は、

未参照の関数名 lib

でGoogle等で検索するとライブラリ名が分かるので、それを追加する。

glaux関連

吸収されたようなので従来のソースでglaux.hの部分はコメントアウト。glaux.libの参照は削除。

OpenCV

glaux.hのインクルードはコメントアウトし、ライブラリglaux.libの参照は削除。

ライブラリが不足するエラーが多発するので関数名で検索する。 面倒ならuser32.lib ole32.lib oleaut32.lib advapi32.lib gdi32.lib comdlg32.libあたりを突っ込んでおけば大抵通る。

CBaseInputPin、CTransInPlaceFilterが無い

Debugの時だけエラーが発生する。Classの継承で型が一致していないのが原因。 それぞれpObjectNameの宣言をconstにする

ProxyTrans.h

ProxyTransform (const TCHAR *tszName, LPUNKNOWN punk, HRESULT *phr);

ProxyTrans.cpp

ProxyTransform::ProxyTransform(const TCHAR *tszName,LPUNKNOWN punk,HRESULT *phr) :

SyncFilter.h

cvSyncInputPin(const TCHAR *pObjectName,