基于PC的DirectShow开发及其开发环境配置
扫描二维码
随时随地手机看文章
基于PC的DirectShow开发及其开发环境配置
二个Sample源代码(必须安装Platform Builder 5.0):
D:/WINCE500/PUBLIC/DIRECTX/SDK/SAMPLES/DSHOW/PLAYERS/PLAYWND(一个简单的PLAYER样例程序)和D:/WINCE500/PUBLIC/DIRECTX/SDK/SAMPLES/WMP/CEPLAYER(完整的Windows Media Player源代码)
顺便说一下,D:/WINCE500/PUBLIC/DIRECTX/SDK/就是类似于PC机上DirectX SDK开发包,不需要我们再次安装了。这个SDK包含DirectShow开发所需要的BaseClasses编译出来lib库和头文件。
网上下载的基于Windows Mobile DirectShow的H264 Player Demo及其H264的Source filter、Transform filter开发,这个例子对一个刚入门Windows Mobile DirectShow开发的人很有用。
有了这些资源我就尝试着用VS2005 Build出一个PLAYWND的Sample Player,把源代码拿来,基本上只有playwnd.cpp、playwnd.h和playwnd.rc资源文件,代码是按照Windows SDK开发的,非MFC。首先我在VS2005上建立一个基于smart devices的win32 application工程,SDK有Pocket PC 2003和Smart Phone 2003,然后把这几个关键源文件导入到工程中去,初次编译,报出许多错误,基本上都是找不到DirectShow相应的类和一些标识的错误。参考PC的DirectShow开发环境配置,在DirectShow开发之前,首先得有BaseClasses编译出来的相关的lib库,在这里,我们可以省去编译BaseClasses了,Platform Builder 5.0安装好之后就在文件夹D:/WINCE500/PUBLIC/DIRECTX/SDK/LIB和D:/WINCE500/PUBLIC/DIRECTX/SDK/INC下提供给我们DirectShow开发所需要的库和头文件,我们需要把这些库和头文件包含进来,具体的设置:
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
指明包含库和头文件的路径
Project->properties->configuration properties->linker->Input下添加:
Additional Dependencies: strmbase.lib strmiids.lib commdlg.lib,指明DirecShow编译需要包含哪些具体的库名。
以上设置基本上完成了,但还有一些小错误,是缓冲区检查等错误,设置:Project->properties-> configuration properties->C/C++->Code Generation下设置Buffer Security Check: No
还有这个错误: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选项。