DirectShow VS2008开发环境搭建

http://blog.csdn.net/ym012/article/details/7231993


四年前开发其它项目时搭建过环境,但是现在早忘了,又是又要麻烦了下gg姐姐和百度娘,现在把过程记一下,以后只麻烦自己就可以了。

1,下载SDK

下载:directx sdk

文件名:DXSDK_Jun10.exe

 

下载:DirectShow Extra (为什么要这个,请看最下面)

文件名:DirectX 9.0 SDK Update (February 2005)Extras

解压后,将DirectShow目录copydrrectxsdk安装目录的Extras目录下

 

2,编译DirectShow下Samples\C++\DirectShow\BaseClasses工程,报如下错误:

Error        1        errorC4430: missing type specifier - int assumed. Note: C++ does not supportdefault-int        c:\Program Files\MicrosoftDirectX SDK (June2010)\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses\ctlutil.h        278

最后看代码错误发生在:operator=(LONG);函数定义中,这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整 形;但是vs2008不支持默认整形,解决这个问题不能修改每个没有显示指示返回值类型的函数地方,可以用wd4430来解决;具体的在工程选项中的c++/Command Line中添加/wd4430即可。 

 

再编译:发现在很多for循环的地方有error

这是C++标准语法的问题,因为在之前在for循环内定义的变量可以在for之外的地方使用,即在第一个for里for(inti,...),以后的for再使用i不必再声明,解决方法也很简单,打开project->BaseClassesproperties->configuration->C/C++->Language->Force Comformance inFor Loop Scrope设置为No即可

再编译,OK了。生成strmbasd.lib文件。

 

3,在Tools->Options->Projects andsolutions->vc++ directories->show directories for->include filesTools->Options->Projects andsolutions->vc++ directories->show directories for->library files里把相应的头文件目录和类库目录包含进来

 

最后一段话 

关于Platform SDK和Windows SDK 问题1:什么是Windows SDK?

Windows SDK是用来支持32位和64Windows平台以及.NET框架编程模型的开发包。Windows SDK这个名字从Windows Vista开始使用,它包含以前Platform SDK中的所有内容,同时包含.NET框架的内容。

 

问题2:什么是Platform SDK?

Platform SDK(也简写作PSDK)是在Windows Vista之前的Windows操作系统开发包。PSDK不包含任何.NET框架编程模型的内容。现在,Windows SDK已经取代了PSDKPSDK不会再有更新版本发布,尽管一些PSDK仍然可以在微软的网站上下载到

 

问题3:在什么情况下我还需要使用老的Platform SDK?

你可能因为某些原因还是要去使用老的Platform SDK。比如,你还在使用VC 6进行开发,那你就要去用2003年2月份发布的Windows Server 2003 PSDK,这是最后一个对VC 6开发提供全面支持的SDK

 

问题4:Windows SDK只支持Windows Vista开发吗?

(2006年发布了第一个版本的Windows SDK。)2007年3月份发布的Windows SDK Update for Windows Vista支持了除Vista以外更多的操作系统,如Windows Server 2003、Windows Server 2003 R2 Standard Edition (32-bit x86)Windows Server 2003 R2 x64 editionsWindows Server 2003 Service Pack 1、Windows Server 2003 x64 editions、所有版本的Windows VistaWindows XP Service Pack 2。在SDK下载页面的“Supported Operating Systems”声明中,我们可以看到该SDK最新包含的内容,以及支持的所有操作系统(可以在它上面开发的以及为它开发应用的所有系统)。




vs2005、vs2008配置DirectShow详解 

http://blog.163.com/zhouence518@126/blog/static/7143545620102191406314/

1、注意点(版本问题):在比较老的资料里可以知道:directshow是包含在directx SDK里面的。这里要强调一点,这是在DirectX 9.0b之前的情况,在9.0c以后,directshow和DirectX就彻底分家了,directshow被移到了windows platform sdk里。如果你只安装了DirectX9.0b之后的版本,是没有directshow的。

2、我的安装目录是:C:\DXSDK

3、找到C:\DXSDK\Samples\C++\DirectShow\BaseClasses下的baseclasses.sln,打开后可能会提示转换,注意留下备份。编译通过后会生成strmbasd.lib,在debug或者release目录下(取决于你程序生成的版本)。

注意点:编译中遇到的问题及解决方法:

      3.1若定位错误到如下两行:

typedef void *PVOID;

typedef void * POINTER_64 PVOID64;

则修改为:

#define POINTER_64 __ptr64 //加上这一行

typedef void *PVOID;

typedef void * POINTER_64 PVOID64;

3.2 若for循环中变量作用域出现问题,则如下修改:

C++标准语法的问题,因为在之前在for循环内定义的变量可以在for之外的地方使用,即在第一个for里for(int i,...),以后的for再使用i不必再声明,解决方法也很简单,打开project->BaseClasses properties->configuration->C/C++->Language->Force Comformance in For Loop Scrope设置为No即可

3.3 再次编译,若还有其他问题,则做如下修改

打开project->BaseClasses properties->configuration->C/C++ ->Command Line,增加/wd4430选项

4、配置工作环境

4.1 1. 首先,点击工具->选项->项目和解决方案->VC++目录。如图添加两个引用:

C:\DXSDK\Samples\C++\DirectShow\BaseClasses

C:\DXSDK\Include

vs2005、vs2008配置DirectShow详解 - 泽泽 - 我思故我在

4.2 2. 如图,再添加库文件的引用。

C:\DXSDK\Samples\C++\DirectShow\BaseClasses\Debug

C:\DXSDK\Lib

vs2005、vs2008配置DirectShow详解 - 泽泽 - 我思故我在

4.1步与4.2步注意点:

请将C:\DXSDK替换为你安装directX所在的目录。且我们所添加的路径最好位于最上端,若开发环境中原来有SDK路径,则去掉开发环境中原来的windows SDK路径

5、 新建工程,需要在新建好的工程里的  项目->属性->配置属性->链接器->命令行下的“附加选项”里添加strmbasd.lib


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值