Windows7SDK/DXSDK_Aug09でコンパイル Server2008SDKにしようと思ったら、SP1とコンフリクトするからWindows7SDKにしたほうが良いと書いてあった。 ということで、Windows7SDKへの以降手順をまとめてみた。 準備: Windows7SDKの Samples\multimedia\directshow\baseclasses はVC8プロジェクト完備なので、Release版をサクッとビルド libfaad2.7もVC8プロジェクト完備なのでそのままRelease版をビルド ライブラリパスを通すか、TVTest_0.5.55_Src\Release\LibFaad.libにコピーする TVTest_0.5.55_Src\ICC\ICC.slnは壊れているようなので、ICC.slnを捨てて、 ICC.sln_oldをICC.slnにリネームしてRelease版をビルド パス設定: TVTest プロジェクトプロパティ TVH264 プロジェクトプロパティ C/C++ インクルードパス $(WindowsSdkDir)Samples\multimedia\directshow\baseclasses TVTest プロジェクトプロパティ TVH264 プロジェクトプロパティ リンカ ライブラリパス $(WindowsSdkDir)Samples\multimedia\directshow\baseclasses\Release TVH264 プロジェクトプロパティ リンカ ライブラリパス(Multi2Decoder.libへ) $(SolutionDir)$(ConfigurationName)\ を追加 コンパイル: videorenderer.cpp d3d.hは見つからないと怒られるので #include #define D3D_OVERLOADS //#include <-コメントアウト TVTeast.cpp Command.cpp CaptureOptions.cpp で大量にコンパイルエラーが出る。右クリックで定義に移動するとShlwapi.hが開く 対策 stdafx.h に #include #include #include #include #include #include <-追加 MediaViewer.cpp リンクエラーが出るので、IMPEG2PIDMapに__uuidofマクロを使うように変更 // 映像出力ピンのIMPEG2PIDMapインタフェースのクエリー //hr=pOutputVideo->QueryInterface(IID_IMPEG2PIDMap,(void**)&m_pMp2DemuxVideoMap); hr=pOutputVideo->QueryInterface(__uuidof(IMPEG2PIDMap),(void**)&m_pMp2DemuxVideoMap); if (hr != S_OK) throw CBonException(hr,TEXT("映像出力ピンのIMPEG2PIDMapを取得できません。")); // 音声出力ピンのIMPEG2PIDMapインタフェースのクエリ //hr=pOutputAudio->QueryInterface(IID_IMPEG2PIDMap,(void**)&m_pMp2DemuxAudioMap); hr=pOutputAudio->QueryInterface(__uuidof(IMPEG2PIDMap),(void**)&m_pMp2DemuxAudioMap); リソース: ThumbBar.bmpが欠けているのでアプリケーションリソースからResourceフォルダへコピー(ResHacker.exe使用) 以上でコンパイルが通る(ハズ)。 実行ファイルサイズが少し小さくなる。不安定さは今のところ感じられない。 DXランタイムとかは新しいものに自動更新しているので、こちらの方が相性は良いのかも。