基于PC的DirectShow開(kāi)發(fā)及其開(kāi)發(fā)環(huán)境配置
掃描二維碼
隨時(shí)隨地手機(jī)看文章
基于PC的DirectShow開(kāi)發(fā)及其開(kāi)發(fā)環(huán)境配置
二個(gè)Sample源代碼(必須安裝Platform Builder 5.0):
D:/WINCE500/PUBLIC/DIRECTX/SDK/SAMPLES/DSHOW/PLAYERS/PLAYWND(一個(gè)簡(jiǎn)單的PLAYER樣例程序)和D:/WINCE500/PUBLIC/DIRECTX/SDK/SAMPLES/WMP/CEPLAYER(完整的Windows Media Player源代碼)
順便說(shuō)一下,D:/WINCE500/PUBLIC/DIRECTX/SDK/就是類(lèi)似于PC機(jī)上DirectX SDK開(kāi)發(fā)包,不需要我們?cè)俅伟惭b了。這個(gè)SDK包含DirectShow開(kāi)發(fā)所需要的BaseClasses編譯出來(lái)lib庫(kù)和頭文件。
網(wǎng)上下載的基于Windows Mobile DirectShow的H264 Player Demo及其H264的Source filter、Transform filter開(kāi)發(fā),這個(gè)例子對(duì)一個(gè)剛?cè)腴T(mén)Windows Mobile DirectShow開(kāi)發(fā)的人很有用。
有了這些資源我就嘗試著用VS2005 Build出一個(gè)PLAYWND的Sample Player,把源代碼拿來(lái),基本上只有playwnd.cpp、playwnd.h和playwnd.rc資源文件,代碼是按照Windows SDK開(kāi)發(fā)的,非MFC。首先我在VS2005上建立一個(gè)基于smart devices的win32 application工程,SDK有Pocket PC 2003和Smart Phone 2003,然后把這幾個(gè)關(guān)鍵源文件導(dǎo)入到工程中去,初次編譯,報(bào)出許多錯(cuò)誤,基本上都是找不到DirectShow相應(yīng)的類(lèi)和一些標(biāo)識(shí)的錯(cuò)誤。參考PC的DirectShow開(kāi)發(fā)環(huán)境配置,在DirectShow開(kāi)發(fā)之前,首先得有BaseClasses編譯出來(lái)的相關(guān)的lib庫(kù),在這里,我們可以省去編譯BaseClasses了,Platform Builder 5.0安裝好之后就在文件夾D:/WINCE500/PUBLIC/DIRECTX/SDK/LIB和D:/WINCE500/PUBLIC/DIRECTX/SDK/INC下提供給我們DirectShow開(kāi)發(fā)所需要的庫(kù)和頭文件,我們需要把這些庫(kù)和頭文件包含進(jìn)來(lái),具體的設(shè)置:
Tools->options->project and solutions->VC++ Directories下添加:
Platform: Pocket PC 2003(ARMV4)
Show directories for: Include files: D:/WINCE500/PUBLIC/DIRECTX/SDK/INC
lib files: D:/WINCE500/PUBLIC/DIRECTX/SDK/LIB/ARMV4I/RETAIL
D:/WINCE500/PUBLIC/DIRECTX/SDK/LIB/ARMV4I/DEBUG
指明包含庫(kù)和頭文件的路徑
Project->properties->configuration properties->linker->Input下添加:
Additional Dependencies: strmbase.lib strmiids.lib commdlg.lib,指明DirecShow編譯需要包含哪些具體的庫(kù)名。
以上設(shè)置基本上完成了,但還有一些小錯(cuò)誤,是緩沖區(qū)檢查等錯(cuò)誤,設(shè)置:Project->properties-> configuration properties->C/C++->Code Generation下設(shè)置Buffer Security Check: No
還有這個(gè)錯(cuò)誤:BaseClasses/ctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int,解決方法如下:project->properties->configuration->C/C++ ->Command Line,增加/wd4430選項(xiàng)。
?