1.下载DirectShow
现在DirectShow已经不和DirectX一起发布,而是和windows sdk 打包发布。
win7 sdk下载地址:http://www.microsoft.com/download/en/details.aspx?id=8442。
按系统类型进行下载:
也有人下载老版本的DirectShow,比如DirectX 9.0c sdk。不过老版本的DirectShow,在Win7 + vs2010环境下编译可能会出很多问题,包括语法错误。而我直接下载DirectShow的最新版本,编译起来就顺利多了。
2.安装DirectShow
安装过程很简单,几乎是一路next就可以。安装路径默认就好,另外就是可以有选择的安装。比如只勾选“Samples(里面包含DirectShow)”和“Windows Headers and Libraries”。
3.编译DirectShow
需要编译的是DirectShow下的baseclasses项目,默认路径是:“C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses”。
可以编译生成4个不同版本的.lib。(注意:在开发DirectShow应用程序时,在Debug时应该链接strmbasd.lib;在Release时应该链接strmbase.lib。如果在Debug时链接strmbase.lib,就可能会输出大量的error LNK2019和error LNK2001。因为这些调试函数在strmbase.lib中不存在。)
因为我这里下载的是最新版本的DirectShow,所以没有遇到很多网友提出的各种编译错误。
4 配置DirectShow目录
开发DirectShow程序时,需要在项目属性中添加DirectShow的include和lib目录(最好按照如下顺序)。
(1)include:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\common
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include
(2)lib:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Release
5.编译错误
按照以上步骤编译、配置之后,我在开发DirectShow程序时只遇到一个编译错误:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
这个错误在编写WinCE DirectShow程序时就遇到过,解决方法就是添加C/C++的命令行:/wd4430。
6. 至此,我的DirectShow程序已经可以跑起来了。
参考链接:
http://blog.youkuaiyun.com/luckyboy101/article/details/7801173
http://www.cnblogs.com/chef/archive/2012/06/26/2564166.html
http://blog.163.com/wuyuanhere@126/blog/static/173323728201181910123054/
http://www.cnblogs.com/sailing/archive/2010/07/25/1784905.html