WIN7安装DirectSDK

来源:互联网 发布:iptv管理系统php 编辑:程序博客网 时间:2024/06/02 01:59

1 平台介绍

         win 7。

        我不知道以下做法是不是vs2010与directshow操作正确的唯一途径,但是我经过以下安装和配置之后就可以写DirectShow程序和开发filter(继承父filter)了。

 

2 软件安装

 

2.1 安装顺序

        按照下面的顺序安装软件:

(1)visual studio 2010

(2)Windows sdk 7.1

(3)Visual studio 2010 sp1

(4)VC-Compiler-KB2519277.exe

各软件的下载网址我就不粘贴了,可以用google搜索的。

 

2.2 注意

(1)在安装Windows SDK之前,一定要先卸载比Microsoft Visual C++ 2010 x86(x64) Redistributable - 10.0.30319更高的版本(不包括Microsoft Visual C++ 2010 x86(x64) Redistributable - 10.0.30319),如果你是首次安装vs,这个问题就不存在。

(2)在安装windows sdk的时候不要安装VC编译器,在安装完vs 2010 sp1后再安装VC-Compiler-KB2519277.exe补上。

 

至于每一个软件的安装过程就不贴图了,图比较多。如果不清楚的话可以到谷歌里搜一下作为参考的。具体看开发需要。

 

3. DirectShow程序开发配置

        只是开发direcshow程序时,如只进行视频预览而不继承父filter时的配置如下:

打开VS2010的Property Manager 即属性管理器,右键当前项目-->properties(属性)-->VC++ Directories

在Include Directories中添加Directshow以下目录:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Include

在Library Directories中添加DirectShow的库目录:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib

 

好了,可以开发DirectShow程序了。

 

4. filter程序开发配置

 

4.1编译BaseClasses

        一般来说开发filter的程序需要用到filter基类,directshow的基类在(SDK samples root)\DirectShow\BaseClasses下。所以首先需要用vs2010来build BaseClasses项目,使之生成相应的库文件。在开始中以管理员的身份打开vs2010,然后打开BaseClasses项目,分别以Debug(生成strbasd.lib库文件,供debug项目所调用)和Release(生成strbase.lib库文件,供release项目所调用)方式Build(F7)baseclasses项目(不要用Debug,用了Debug之后可能会出现找不到BaseClasses.lib的错误提示)。

 

4.2 配置vs2010

 

4.2.1 包含目录

依然打开vs2010 属性管理器,然后经相同的步骤到VC++目录下:

在Include Directories中包含direcshow目录如下:

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

 在 Libray Directories中包含以下目录:

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

 

4.2.2 注意

注意以上头文件的包含顺序!!

 

4.2.3 如果目录包含顺序不对

如果包含目录顺序不对则会出现以下错误:

1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(80) : error C2061: syntax error : identifier ''CAMSchedule''
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(139) : error C2143: syntax error : missing '';'' before ''*''
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(139) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(139) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(139) : warning C4183: ''GetSchedule'': missing return type; assumed to be a member function returning ''int''
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(178) : error C2143: syntax error : missing '';'' before ''*''
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(178) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(178) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(139) : error C2065: ''m_pSchedule'' : undeclared identifier
1>e:\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(166) : error C2227: left of ''->GetEvent'' must point to class/struct/union/generic type

第一次出现这个错误后就去将vs2010的环境配置目录修改为以上顺序吧。好像只要编译通过了,包含目录的顺序就无所谓了。

原创粉丝点击