• 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 FilesMicrosoft SDKsWindows并没有发现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 FilesMicrosoft SDKsWindowsv7.1Samplesmultimediadirectshow。《Visual C++音频视频技术开发与实战》一书(后文简称《实战》)中以给出的目录是showSamplesC++DirectShowBaseClasses,因为当时的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 FilesMicrosoft SDKsWindowsv7.1Samplesmultimediadirectshowaseclasses
    C:Program FilesMicrosoft SDKsWindowsv7.1Samplesmultimediadirectshowcommon

    C:Program FilesMicrosoft SDKsWindowsv7.1Include

    C:Program FilesMicrosoft Visual Studio 10.0VCinclude

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

    DXShow_11.JPEG

    库目录中添加刚刚编译生成的BaseClasses库的lib文件的目录:

    C:Program FilesMicrosoft SDKsWindowsv7.1Lib
    C:Program FilesMicrosoft SDKsWindowsv7.1SamplesmultimediadirectshowaseclassesDebug

    C:Program FilesMicrosoft SDKsWindowsv7.1SamplesmultimediadirectshowaseclassesDebug_MBCS

    C:Program FilesMicrosoft SDKsWindowsv7.1SamplesmultimediadirectshowaseclassesRelease

    C:Program FilesMicrosoft SDKsWindowsv7.1SamplesmultimediadirectshowaseclassesRelease_MBCS

    C:Program FilesMicrosoft Visual Studio 10.0VClib

    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

  • 相关阅读:
    直播报名| Kylin on Parquet 介绍及快速上手
    直播 | Apache Kylin & Apache Hudi Meetup
    1. MySQL体系结构和存储引擎——MySQL体系结构、存储引擎、连接MySQL
    深入理解Java虚拟机(第三版)-13.Java内存模型与线程
    Redis 字典实现
    JVM 判断对象已死亡?
    堆内存常见的分配策略、 经典的垃圾收集器、CMS与G1收集器及二者的比较
    String.intern() 和常量池
    Java 对象的创建过程(五步)、对象的内存布局、对象的访问定位
    Java内存区域(运行时数据区域)详解、JDK1.8与JDK1.7的区别
  • 原文地址:https://www.cnblogs.com/oucsheep/p/4822911.html
Copyright © 2020-2023  润新知