DirectShow+VS2010+Win7配置说明,详细附图

不得不说,使用windows的东西确实很麻烦,DirectShow这个东西不断更新换代,书本上的知识完全跟不上时代,只能去博客上查资料。百度之后,看了大量的文章,终于完成了自己的DirectShow安装,配置是Win7+VS2010+Windows SDK 7.1+VS2010SP1(补丁)+VC-Compiler-KB2519277。使用VS2012的同志们要注意了,可能配置的方法会很不一样,因为据说VS2012集成了Windows SDK,不知道DirectShow又没有被集成在里面,待我研究一下再发一篇详细说明。
理论上,安装顺序如各路博主所说(顺便附上下载地址):

(1)visual studio 2010 ( http://pan.baidu.com/s/1o65pOBg  密码:  pzpw)
(2)Windows sdk 7.1  (http://www.microsoft.com/en-us/download/details.aspx?id=8279
(3)Visual studio 2010 sp1 (看博文 http://blog.csdn.net/feidewu/article/details/8105890
(4)VC-Compiler-KB2519277.exe (http://www.microsoft.com/zh-cn/download/details.aspx?id=4422

但是里面有很多的细节需要注意,本文中我会以大量图片详细展示安装过程,希望能对大家有所帮助。

先讲了一下自己刚开始安装失败的经历,以供大家借鉴。

电脑上早已经装好了VS2010,这个的安装就不多说,基本就是狂点下一步。然后我下载了Windows SDK 7.1,解压,点击Setup安装,安装很快结束了,并没有提示报错,但这时候去到安装目录下C:\Program Files\Microsoft SDKs\Windows\并没有发现v7.1这个文件夹,说明并未安装成功。百度了一下,发现需要把NetFramework4.0以上的版本卸载掉,于是打开控制面板,发现电脑里装的是NetFramework4.5,于是把所有带NetFramework4.5字样的软件全卸了,包括语言包什么的。

原因可能是SDK 7.1会安装NetFramework4.0到电脑上,因此要是发现电脑上有比4.0还高的版本,肯定就中止安装了。这和后面安装VS2010sp1要先卸载比Microsoft Visual C++ 2010 x86(x64) Redistributable – 10.0.30319 更高的版本原理是一样的。
卸载之后我又装了一遍SDK,这次倒是装上了,发现VS2010却打不开。然而我又不屈不挠的装了VS2010sp1(补丁),结果出错了。

VS2010SP1_4

仔细看攻略,原来SDK安装时不能勾选VC_compiler选项,第一次装的SDK的时候肯定是把这个选项勾上了(默认是打勾的)。为了防止再出什么意外,我直接卸载了VS2010和SDK,从头开始。

1、从头开始  Window SDK 7.1

 

按照博主们提供的步骤,从头开始,先安装VS2010,装完特意去控制面板看了一下,此时已经是NetFramework4.0,看来是VS2010自带的。接下来就可以放心得安装Windows SDK7.1,只是安装时注意不要勾选VC_compiler。装完去安装目录下看一眼,已经有了7.1这个文件夹,说明装好了。

DXShow_1

SDK安装过程附图如下:

首先检测已安装的组建

NetFramework4_1

NetFramework4_2

NetFramework4_3

下面这步最重要,一定记得把Visual C++ Compilers 这项的勾去掉

NetFramework4_4

 

NetFramework4_5

2、VS2010SP1
然后安装VS2010SP1,这虽然只是VS2010的一个补丁,却也有1.5G,最好安装离线版,因为在线安装非常容易中断。安装之前要先卸载掉比Microsoft Visual C++ 2010 x86(x64) Redistributable – 10.0.30319更高的版本(不用卸这个版本),比如11.0.XXXXX等。下图中这个10.0.40219就得卸载掉,后面这个VS2012的补丁最好也卸载掉吧(没在下图这台电脑上试验过,不过如果没装VS2012的话还是卸载掉好)

VS2010SP1_7.JPEG
安装过程比较耗时,几乎和安装VS2010一样慢。

VS2010SP1_1

VS2010SP1_2

VS2010SP1_3

VS2010SP1_5

VS2010SP1_6

 

 

 

3、VC-Compiler

装完SP1补丁后,还剩最后一步,安装VC编译器,这步没什么好说的,狂点下一步就好了。

VC_Compiler_1

VC_Compiler_2

 

VC_Compiler_3

VC_Compiler_4

4、编译BaseClasses项目

安装完后,需要编译BaseClasses项目,目录为—C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow。《Visual C++音频视频技术开发与实战》一书(后文简称《实战》)中以给出的目录是show\Samples\C++\DirectShow\BaseClasses,因为当时的DirectShow还集成在DirectX里面,而现在是集成在Windows SDK里,以后随着版本不同还可能改变,微软就是这么坑,然而万变不离其宗,大家耐心寻找应该能找到。
找到之后打开sln后缀的项目文件,用VS2010打开,会提示项目版本太低需要转换,按照步骤点下一步转换即可。

DXShow_2

然后在VisualStutio里生成解决方案(F7),由于《实战》中用的DirectShow版本较低(VS2005),因此在VS2010中编译时会出现各种错误,作者也给出了详细解答(解决VS里各种莫名其妙的编译错误确实很费脑子)。幸运的是,本文中使用的Windows SDK7.1兼容性还是蛮好,编译一次通过。

为了在项目中使用编译生成的库文件,我们需要在四种模式(Debug,Debug_MBCS,Release,Release_MBCS)下分别编译此工程,可以得到四个类型的strmbasd.lib分别在BaseClasses的相应目录下。

DXShow_3

5、添加包含目录、库目录和附加依赖项

编译成功之后需要在项目属性中设置包含路径(Include)和库文件(lib)的路径,新建或打开一个项目,设置项目的通用属性。在属性管理器中选择Debug或Release模式中的Microsoft.Cpp.Win32.user,修改通用属性->C++目录->包含目录,添加以下包含路径(注意顺序不能错,否则会报错)

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

C:\Program Files\Microsoft Visual Studio 10.0\VC\include

注意以上路径可能随程序的安装路径而变化,笔者是把所有软件都装在了C:\Program Files下。

DXShow_11.JPEG

 

库目录中添加刚刚编译生成的BaseClasses库的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\Debug_MBCS

C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Release

C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Release_MBCS

C:\Program Files\Microsoft Visual Studio 10.0\VC\lib

DXShow_13.JPEG

最后一步是设置通用属性->链接器->输入->依赖附件项,  添加:strmbasd.lib; winmm.lib; msvcrtd.lib; 其他博主们说在windows系统下要用分号隔开,但是我把他们分开放在了三行,也没有问题,可能是放在同一行的话需要分号隔开吧。

DXShow_12.JPEG

配置完成

需要说明的是,在User属性中完成了上述配置,之后再建立新的项目都会继承这些属性,不用重复配置,非常方便。下面就可以开始建立项目体验DirectShow了。

下一篇,如何使用于世祺老师的CameraDS类

 

参考文献:

http://blog.csdn.net/lzkit/article/details/18501637

http://jingyan.baidu.com/article/546ae1856161cf1149f28c95.html

http://blog.sina.com.cn/s/blog_7291f6ad0102v1yc.html

http://zhidao.baidu.com/link?url=9LkfygpBo6h6ug55ju-uYxQaW2qq2XVBra8Gck2GqC8LEyMniNfxUsbbayvEze9EHqpq0BwJHIuq3f6o3Cwx3iW21kl-0_EIIEvVQJIFb6G

版权声明:本文为oucsheep原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/oucsheep/p/4822911.html