就VS開發(fā)環(huán)境細(xì)節(jié)進(jìn)行探討
對于就VS開發(fā)環(huán)境花費了我?guī)讉€星期的時間,其中的主要問題在于修改代碼、修改編譯選項使其編譯通過網(wǎng)上的參考也不可盡信,經(jīng)常浪費很多時間和精力,但是最后程序仍沒有編譯通過,這個很是頭疼。
我在 Visual Stdio 6.0,2003,2005,2008 都嘗試過了配置 DirectShow,基本可以達(dá)到不需要修改代碼就可以編譯通過。經(jīng)驗就是,要配合 Visual Studio 的版本選擇不同的 DirectShow 的版本。一般來說,要選取 比同時期的 Visual Studio 略晚發(fā)行的 DirectShow 版本。VS開發(fā)環(huán)境(我覺得,微軟至少要對新發(fā)行的 DirectShow SDK 在當(dāng)前主流的編譯環(huán)境中測試才對,所以一般這種匹配都是很容易一下子編譯通過。#t#
Visual C++ 6.0
陸其明老師的《DirectShow 開發(fā)指南》是一本不錯的書,使用的環(huán)境就是 VC 6.0。按照我剛才的理論,幾乎所有的 DirectShow 版本都可以容易的安裝在 VC 6 上,因為它太古老了。不過,要是安裝最新的 SDK 反而不行,因為 VC 6 的編譯器問題很多,對標(biāo)準(zhǔn)支持得也不是很好,所以導(dǎo)致最新的 SDK 無法編譯。
陸的書上所用的版本其實是 dx9sdk.exe (2002.12.19),我這里給出的是微軟官方的鏈接VS開發(fā)環(huán)境(他們把所有的版本都保留了),需要正版驗證才能下載(應(yīng)該不成問題吧...)。
我建議使用 DirectX SDK Summer 2004 版本,這個版本是最后一個整合 DirectShow 的 DirectX SDK版本。
之后微軟把 DirectShow 分離出來了,比如需要安裝 DirectX SDK April 2005 版本再加上 DirectX SDK February 2005 Extras。也就是說,DirectX 已經(jīng)不含 DirectShow,這個時候(2005年)它被包含在 Extras 里面。所以安裝了 Extras 基本上就可以進(jìn)行 DirectShow 開發(fā)了。
Visual Studio 2003
這個版本建議安裝 Summer 2004 這個版本。Extras 也沒問題。
Visual Studio 2005
這個版本我用的不是很多,印象中安裝 Summer 2004 沒問題,甚至更低的 9.0b 也沒問題。VS開發(fā)環(huán)境安裝很新的版本就會出現(xiàn)我說的那種太超前反而編譯不了的現(xiàn)象。
大概到 2006 年,DirectShow 就被包含在了 Windows Platform SDK 中。不知道最新的 Platform SDK 對 VS2005 支持地如何,我沒有去試。之前有一個版本需要修改一些代碼才能編譯。
Visual Studio 2008
非常簡單,VS開發(fā)環(huán)境最新版的 DirectX SDK June 2008 和 Platform SDK (2006.03.15) 即可。另外,Platform SDK 的后續(xù)版本似乎叫 Windows SDK,內(nèi)含的 Media Foundation 似乎要取代 DirectShow。(Windows SDK for Windows Server 2008 and .NET Framework 3.5 2008.02.05)
進(jìn)行環(huán)境配置
如果 DirectShow 的版本比 VS 要新,則相應(yīng)的頭文件和庫文件就會自動配置,否則就要手動添加。如果安裝的 DirectShow 比較早,那么在 baseclasses 里面就會有相應(yīng)的工程文件,打開編譯即可。如果安裝的是 Platform SDK 就會只有一個 makefile,注意到在安裝完 Platform SDK 以后,開始菜單會有一些進(jìn)入不同編譯環(huán)境的快捷方式,選一個想編譯的版本進(jìn)入,然后在 baseclasses 下 輸入 nmake,就會自動編譯了。
還需要注意的就是一些庫的引用、編譯鏈接的選項等等,VS開發(fā)環(huán)境在出現(xiàn)問題的時候搜索就行,一般不是大問題。