Date

Visual Studio 2010 が RTM して、昨日 Windows SDK v7.1 も公開された。Windows 7 上で DirectShow プログラミングをする方向けに、これらを組み合わせて DirectShow 基底クラス (BaseClasses) のコンパイルを行う方法を記述する。

用意するもの

  1. Visual Studio 2010 RTM版
  2. Windows SDK v7.1

Visual Studio 2010 RTM に付属している Windows SDK は v7.1A v7.0Aである。これには BaseClasses は含まれないのでフルセットである Windows SDK v7.1 をインストールする必要がある。v7.0はVS2010のプラットフォームツールセットの設定が無いので7.1をお勧めする。

インストールしたら %programfiles%\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\baseclasses.sln を開く。このとき、Visual Studio 2010 を管理者として実行する必要がある。

プロジェクトをプロジェクト変換ウィザードでVisual Studio 2010用に変換する。

次に Windows SDK v7.1 を参照するように変更する。BaseClasses のプロパティを開き、プラットフォームツールセットをWindows7.1SDKに変更する。ここがVisual Studio 2008と異なるところで、プラットフォームツールセットを変更すると、$(WindowsSdkDir)マクロの値が変化し、参照する Windows SDK のバージョンを切り替えることができるようになっている。

ここでコンパイルしてみると、次のような警告が発生してしまう。

1
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(1151,5): warning MSB8012: TargetPath(C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\x64\Release\BaseClasses.lib) が Library の OutputFile プロパティ値 (C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\x64\Release\strmbase.lib) と一致しません。このため、プロジェクトが正常にビルドされない可能性があります。この問題を解決するには、$(OutDir)、$(TargetName)、および $(TargetExt) の各プロパティ値が、%(Lib.OutputFile) で指定されている値と一致することを確認してください。

出力先フォルダーを確認してみるとライブラリファイルは出力されているが、せっかくなので警告が出ないように修正してみる。

再度、BaseClassesのプロパティの[構成プロパティ]-[ライブラリアン]-[全般]を開く。すべての構成、すべてのプラットフォームに対し、出力ファイルを $(OutDir)$(TargetFileName) に設定する。

[構成プロパティ]-[全般]にある「ターゲット名」を以下のように設定する。プラットフォームはすべてのプラットフォームである。

構成 ターゲット名
Debug / Debug MBCS strmbasd
Release / Release MBCS strmbase

これで再コンパイルをかけると警告が表示されない。めでたしめでたし。


Comments

comments powered by Disqus