Visual Studio 2010 が RTM して、昨日 Windows SDK v7.1 も公開された。Windows 7 上で DirectShow プログラミングをする方向けに、これらを組み合わせて DirectShow 基底クラス (BaseClasses) のコンパイルを行う方法を記述する。
用意するもの
- Visual Studio 2010 RTM版
- Windows SDK v7.1
Visual Studio 2010 RTM に付属している Windows SDK は v7.1A v7.0Aである。これには BaseClasses は含まれないのでフルセットである Windows SDK v7.1 をインストールする必要がある。v7.0はVS2010のプラットフォームツールセットの設定が無いので7.1をお勧めする。
インストールしたら「C:\Program Files\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 のバージョンを切り替えることができるようになっている。
ここでコンパイルしてみると、次のような警告が発生してしまう。
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 |
これで再コンパイルをかけると警告が表示されない。めでたしめでたし。



0 コメント:
コメントを投稿