DirectShow SDK下载
http://www.microsoft.com/en-us/download/details.aspx?id=8442
win 7 skd 安装步骤
因为最近要用到Directshow SDK,又不想再安装其它VS版本,所以直接下了Windows SDK 7.1,下面介绍安装步骤。
首先说明一下我的安装环境,
系统:Windows 7 SP1
IDE:Visual Studio 2010 SP1(以下简称VS2010SP1)
其次,在安装之前要先下载Windows SDK 7.1的离线版,和KB2519277安装包。还有一点很重要,就是在安装VS2010SP1时还自动安装了 Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319 及更高版本,一定要先卸载比 Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319 更高的版本(不包括Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319 )。
再次,现在终于可以开始安装Windows SDK 7.1了,注意在安装时不要选择安装 VC-Compiler,其它选项默认即可。
最后,安装我们事先下载好的 VC-Compiler-KB2519277 安装包,到此完成安装。
---------------------------------------分割线----------------------------------------
对于一些步骤的说明:
1. 卸载比 Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319 更高的版本的原因:
Windows SDK 7.1不支持Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319 以上版本。
2. 安装Windows SDK 7.1时不直接选择安装 VC-Compiler 的原因:
在安装VS2010的SP1补丁时,VC-Compiler就出现了安装问题,没有解决,直接安装VC-Compiler会出错。所以跳过VC-Compiler的安装,待安装完Windows SDK 7.1后再用KB2519277安装包补上。
vs2010 项目属性配置
vs2010使用方案管理项目,一个解决方案下可包含多个项目。
默认情况下,项目属性的设置的目录起点为项目配置文件所在的位置,实际上就是项目头文件和源文件所在的位置。
vs2010中默认建立C++项目,则解决方案总目录下包含一个sln和一个项目文件夹,在vs2010编译器中生成debug和release解决方案后,总目录下还会生成对应的debug和release目录,存放最终生成的exe或dll文件,同时也会在项目文件夹下生成debug和release目录(存放的是中间编译文件obj)。
下面结合例子讲一下:solution为创建的解决方案,demo为创建的项目
解决方案solution总目录如下:
项目demo目录如下:
项目配置及系统变量关系:
在vs2010的项目属性页,会有一些系统变量,如下:
SolutionDir:解决方案目录
Configuration:指debug或release
ProjectName:项目名字
OutDir:在 常规--输出目录 中定义的值,如$(SolutionDir)$(Configuration)\,表示XXX\lolution\debug\目录值
IntDir:中间目录
TargetDir:生成exe或dll文件所在位置,如链接器-常规-输出文件为$(OutDir)$(TargetName)$(TargetExt)(即定义了exe输出位置,也就决定了TargetDit的值),此时TargetDir表示在XXX\lolution\debug\
TargetName:目标输出名,不包括扩展名
TargetPath:目标输出文件的全路径名
ProjectDir:表示项目目录值,一般在“调试-工作目录”中设置该值
TargetExt:扩展名
PlatformToolsetVersion:
ConfigurationName:配置名字,通常是Debug或者Release
默认情况下“输出目录”和“输出文件”对应的目录值是一样的。
配置属性
常规
输出目录:$(SolutionDir)$(Configuration)\
中间目录:$(Configuration)\
目标文件名:$(ProjectName)
目标文件扩展名:.exe
生成日志文件:$(IntDir)\$(MSBuildProjectName).log
调试
命令:$(TargetPath),表示调试器要启动的exe全名,TargetPath就表示目标输出文件的全路径名,所以一般情况下它代表的值就等于“输出文件”属性代表的值
工作目录:$(ProjectDir)
C/C++
预编译头
预编译头输出文件:$(IntDir)$(TargetName).pch
输出文件
ASM列表位置:$(IntDir)
对象文件名:$(IntDir)
程序数据库文件名:$(IntDir)vc$(PlatformToolsetVersion).pdb
浏览信息
浏览信息文件:$(IntDir)
链接器
常规
输出文件:$(OutDir)$(TargetName)$(TargetExt)
清单文件
清单文件:$(IntDir)$(TargetName)$(TargetExt).intermediate.manifest
调试
生成程序数据库文件:$(TargetDir)$(TargetName).pdb
优化:
按配置优化数据库:$(TargetDir)$(TargetName).pgd
配置DirectShow项目属性
下载后可用UltraISO将GRMSDK_EN_DVD.iso的内容提取出来,放到一个文件夹中,就可以直接运行setup进行安装了,而不需刻碟后再用光盘安装。Windows SDK默认被安装到C:\Program Files\Microsoft SDKs\Windows\v7.1目录中。
为了利用DirectShow的基类开发应用程序,必须先编译其BaseClasses项目,一般都要生成两个版本的基类库,一个是Debug版,另外一个是Release版,分别用于调试期间和最后发布。
下面以生成Debug版本为例(生成Release版本与此相类似),用VS2010打开C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses下面的baseclasses项目文件,这时如果直接生成BaseClasses就会报错,必须先配置好VS2010的通用属性\ VC++目录\ 包含目录和库目录。点选属性管理器视图,点选Debug|Win32,打开Debug属性页中的通用属性的各个子项,选取VC++目录,然后编辑包含目录和库目录。
32位Win7平台VS2010的directshow开发环境配置
包含目录包括:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include
C:\Program Files\Microsoft Visual Studio 10.0\VC\include
库目录包括:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib
配置好VC++目录后,在菜单中点选生成\配置管理器,在配置项中选取Debug。关闭配置管理器页面后,再点选生成\生成BaseClasses,就可以顺利生成Debug版本的基类了,基类的库文件 strmbasd.lib 在 C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug目录中。
与此相类似,Release版本的库文件 strmbase.lib 则在 Relesas 目录中。
在需要用DirectShow的基类开发应用程序的项目中,还有把基类的头文件和库文件所在的目录添加到应用程序项目的VC++目录中(注意先后次序,否则可能报错):
包含目录包括:
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\Microsoft SDKs\Windows\v7.1\Lib
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug
C:\Program Files\Microsoft Visual Studio 10.0\VC\lib
以上是针对当前项目配置包含目录和库目录。如果针对VS2010配置默认的包含目录和库目录,则不要在点选
Debug|Win32后马上打开属性页,而是要点选Debug|Win32的子项 Microsoft.Cpp.Win32.user 后再打开属性页,然后按照上面的方法配置目录。这样,其他项目可以通过 从父级或项目默认设置继承就可以了。
32位Win7平台VS2010的directshow开发环境配置
另外,还需要在 项目属性\配置属性\链接器\输入 之中的 依赖附件项 中加入:strmbasd.lib; winmm.lib; msvcrtd.lib (VC6用空格隔开就行了,VS2010一定要用 ;隔开几个项)等库文件,否则会出现一大堆错误:
1>Dialog1.obj : error LNK2001: 无法解析的外部符号 _CLSID_FilterGraph
1>Dialog1.obj : error LNK2001: 无法解析的外部符号 _IID_IGraphBuilder
...........
error LNK2019: 无法解析的外部符号 __imp__timeGetTime@0,该符号在函数 "public: int __thiscall CAMMsgEvent::WaitMsg(unsigned long)" (?WaitMsg@CAMMsgEvent@@QAEHK@Z) 中被引用
...........
学习Directshow自带的 AmCap 例子可以尽快提高DirectShow的编程水平,为此将本人对该例子的理解写出来,希望对爱好者有所帮助。
fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory
VS2010编译 DirectShow一些项目时遇到 错误:fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory
解决方法:
从网上下载一个 qedit.h 的头文件,或者从 vs08 安装的目录下弄一个也行。
然后拷贝下载的 qedit.h 文件到目录 C:\Program Files\Microsoft SDKs\Windows\v7.1\Include 下;
然后在之前编译出错的项目的 "stdafx.h" 的文件中头部加上:
#pragma include_alias( "dxtrans.h", "qedit.h" )
#define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__
#include "Qedit.h"
就ok了~~~
备注:vs2010需要项目属性需要配置 DirectShow 开发环境,具体配置参考网络。。。