![]() ![]() 對于剛剛接觸 DirectShow 的人來說,安裝配置是一個令人頭疼的問題,經(jīng)常出現(xiàn)的情況是最基本的 baseclass 就無法編譯。 一開始我也為此費了很大的功夫,比如說修改代碼、修改編譯選項使其編譯通過。因為大家 Visual Studio 的版本與 DirectShow 的版本各不相同,導致問題多種多樣。網(wǎng)上的參考也不可盡信,往往花費了大量的時間和精力,程序仍沒有編譯通過,而喪失學習 DirectShow 的興趣和信心。 我在 Visual Stdio 6.0,2003,2005,2008 都嘗試過了配置 DirectShow,基本可以達到不需要修改代碼就可以編譯通過。經(jīng)驗就是, Visual C++ 6.0 陸其明老師的《DirectShow 開發(fā)指南》是一本不錯的書,使用的環(huán)境就是 VC 6.0。按照我剛才的理論,幾乎所有的 DirectShow 版本都可以容易的安裝在 VC 6 上,因為它太古老了。不過,要是安裝最新的 SDK 反而不行,因為 VC 6 的編譯器問題很多,對標準支持得也不是很好,所以導致最新的 SDK 無法編譯。 陸的書上所用的版本其實是 我建議使用 之后微軟把 DirectShow 分離出來了,比如需要安裝 Visual Studio 2003 這個版本建議安裝 Summer 2004 這個版本。Extras 也沒問題。 Visual Studio 2005 這個版本我用的不是很多,印象中安裝 Summer 2004 沒問題,甚至更低的 9.0b 也沒問題。安裝很新的版本就會出現(xiàn)我說的那種太超前反而編譯不了的現(xiàn)象。 大概到 2006 年,DirectShow 就被包含在了 Windows Platform SDK 中。不知道最新的 Platform SDK 對 VS2005 支持地如何,我沒有去試。之前有一個版本需要修改一些代碼才能編譯。 Visual Studio 2008 非常簡單,安裝最新版的 進行環(huán)境配置 如果 DirectShow 的版本比 VS 要新,則相應的頭文件和庫文件就會自動配置,否則就要手動添加。 如果安裝的 DirectShow 比較早,那么在 baseclasses 里面就會有相應的工程文件,打開編譯即可。如果安裝的是 Platform SDK 就會只有一個 makefile,注意到在安裝完 Platform SDK 以后,開始菜單會有一些進入不同編譯環(huán)境的快捷方式,選一個想編譯的版本進入,然后在 baseclasses 下 輸入 nmake,就會自動編譯了。 還需要注意的就是一些庫的引用、編譯鏈接的選項等等,在出現(xiàn)問題的時候搜索就行,一般不是大問題。 vc6 下的msdn版本:最后一個支持VS6的版本是2001年10月版; DirectX SDK:DirectX 9.0 Summer 2004 SDK Update, 下載頁面: 這個版本的Direct 9 SDK是不完全支持VC6的, 注意下載頁面的Overview: This download contains all the extra files that are not included in the DirectX 9.0 SDK Summer Update 2004 release such as a d3dx.lib which supports VC 6.0, older plug-ins and Japanese version of the documentation. 即DirectX SDK Summer Update 2004里面附帶的d3dx.lib是不支持VC6的,支持VC6的版本在Extras包里面。 還須下DirectX 9.0 Summer 2004 SDK Update Extras( 另如編譯時出現(xiàn)了DWORD_PTR或者其他什么類型未定義之類的錯誤,是因為微軟把BASETSD.H從DirectX SDK發(fā)行包里拿掉了,這個文件在Platform SDK里有,在VC的Include路徑中把Platform SDK的include路徑提到最前面就可以了。 Platform SDK,最后一個支持VC6的Platform SDK是February 2003 Edition, 下載: DirectX 9.0 Complete Software Development Kit (SDK) :(2002-12-19) DirectX 9.0 SDK Update - (Summer 2004) DirectX 9.0 SDK Update - (August 2005) DirectX 9.0 SDK Update - (February 2005) DirectX 9.0C SDK 的第一個版本是DirectX SDK Summer 2004也是整合有DirectShow SDK 的最后一個版本,這之后面向 DirectX 9.0C用C++開發(fā)應用程序沒有發(fā)生太大變化,以后的版本主要是針對MDX做的改動,如果在VS2003下用C++開發(fā) DirectShow應用程序使 用這個版本最合適.另外Windows XP SP2 中包含的DirectX 的版本就是9.0c ,這也是廣泛使用的DirectX版本.Windows SDK 2004版,支持Windows XP SP2及其以前的Windows 但不包含 DirectX SDK. 之后 DirectShow SDK 不被整合在DirectX SDK中而是以Extras 的形式發(fā)布. DirectShow SDK的最后一個版本是在2005.2版的DirectX SDK Extras中, 這之后DirectShow SDK被整合在Windows SDK中 Windows SDK 2005版(支持Windows Server 2003 SP1 及其之前的Windows)中包含有 DirectShow SDK,Windows SDK 2006年3月版(支持Windows Server 2003 R2及其之前的Windows)也包含. VS2005 中包含有Windows SDK 2005 版,但是沒有DirectShow SDK,所以在VS2005中開發(fā)DirectShow 應用程序要手工安裝DirectX SDK Extras 2005,2 版,和2005年6月之后的DirectX SDK,因為DirectShow 會調(diào)用 DirectDraw,DirectSound等,DirectX SDK 從2005.6開始支持VS2005,我使用的是2005.8版,在這之后的 DirectX SDK中,主要多加入了MDX 2 beta 而這個MDX 2 beta在2006.10中取消了,而被一個叫做XNAGS的東西取代了. Windows SDK for Vista 已經(jīng)正式發(fā)布,DirectShow的示例被更新為VS2005版本, DirectShow 的換代產(chǎn)品是Media Foundation,它將取代DirectShow 就象當年DirectShow 取代 Video for Windows 一樣. DirectX SDK Summer 2004 版 DirectX SDK Extras 2005,2 版 Windows SDK 2006.3 版 for Windows Server 2003 R2 Windows SDK for Vista 2005.2版的DirectX SDK Extras中的示例需要修改一個才可以在VS2005中正常運行,修改列表請看這篇文章. 在 Windows SDK for Vista 中對DirechShow SDK做了一些修改,使之和VS2005結(jié)合的很好,所以最穩(wěn)定的配置是 VS2005 SP1+ Windows SDK for Vista +DirectX SDK 2007.4 雖然有些大. |