1。我用的版本是DirectX9.0b ,没有安装,直接解压后放到一个文件夹里用

2。我按照以下的步骤操作成功。明天试着做个播放器。

VFW(Video for Windows)是Microsoft推出的关于数字视频的一个软件开发包;
DirectShow是微软公司在VFW的基础上推出的新一代基于COM的流媒体处理的开发包,在视频开发中,不论从效率还是实用性上都明显好于VFW。
著名的OpenCV由于时间太早,其视频部分就是基于VFW做的,这点可以说是OpenCV的一个瑕疵;
DirectX8.0 至 DirectX9.0b 此其间的DirectX版本集成了DirectShow,DirectX9.0c以后DirectShow被集成在微软的其它SDK开发包中。
在学习和开发中,可直接下载DirectX9.0b(大约218M),没有其它办法,从微软官方或迅雷的gougou下载DirectX9.0b都可以

第一步:安装DirectX9.0b,要分2步走,最后得到目录比如: C:\DXSDK
第二步:DirectShow日常开发中最常用到的<strmbasd.lib>此文件并没有直接给出,需要我们手动编译,方法如下:
用vc6.0(不要管你以后用什么工具,这步最好用vc6.0)打开C:\DXSDK\Samples\C++\DirectShow\BaseClasses\baseclasses.dsw
好像能直接编译通过,编译设置win32 debug(先不要管那个win32 debug unicode),最后得到文件
C:\DXSDK\Samples\C++\DirectShow\BaseClasses\Debug\strmbasd.lib
如果这步编译不过去不要急,往下看......做完第三步定能编译过去,哈哈

第三步:不要想像别的SDK一样,只把用到的.h提出来就可以了,开发和学习过程中只能配置vc目录选项以找到相应的调用文件,
配置方法:vc6.0和vc2005相同,以vc6.0为例:工具-选项-目录

include files
C:\DXSDK\Include     //一定放在最上面,切记
C:\DXSDK\Samples\C++\DirectShow\BaseClasses //一定放在最上面,切记

library files
C:\DXSDK\Lib       //顺序随意
C:\DXSDK\Samples\C++\DirectShow\BaseClasses\Debug //顺序随意

第四步前传:第二步的strmbasd.lib一定要存在

第四步:vc6.0使用过程
在stdafx.h文件加入以下二行代码:
#pragma comment(lib, "strmbasd.lib")
#include <Streams.h>

F7编译,如果通过,vc6.0的DirectShow环境已OK

第五步:vc2005使用过程
在stdafx.h文件加入以下二行代码:
#pragma comment(lib, "strmbasd.lib")
#include <Streams.h>

F7编译,不通过,主要有2个错误
第1个错误:error C2146: syntax error : missing ';' before identifier 'PVOID64'
转到错误文件:winnt.h找到如下两行代码:
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;
在这两行代码前加上这行#define POINTER_64 __ptr64可解决//只改一处哟,

再F7编译:提示:conversion from 'LONG' to 'PVOID' of greater size,这是第2个错误,注意这次是"PVOID"非上次的'PVOID64'
这个就不能一个一个地改了,因为有很多地方。这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整形;但是vs2005不支持默认整形,解决这个问题不能修改每个没有显示指示返回值类型的函数地方,可以用wd4430来解决;具体的在vs2005项目/属性/ C++/命令行/附加选项中添加/wd4430即可。

再F7编译:通过
vc2005的DirectShow环境已OK

第六步前传:用DirectShow编写1个播放avi视频文件的程序并运行,
做准备工作如下,一定要在网上下个ffShow解码器安装后才可以;不下我也不知道行不行,反正我是下完了运行没问题
关于ffShow解码器愿意看的本文最下面有个题外话

第六步:vc6.0或vc2005在Dialog上任意放个按钮,添加如下代码,编译,运行就可以了

view plaincopy to clipboardprint?
void CShow1Dlg::OnButton1()   
{  
// COM库初始化  
CoInitialize(NULL);  
 
 
// 创建组件对象 Graph(图表,可理解为一个Filter链表)  
IGraphBuilder   *pGraph;   
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,  
   IID_IGraphBuilder, (void **)&pGraph);  
 
 
// 查询得到组件对象上的接口  
IMediaControl   *pMediaControl;   
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);   
IMediaEvent       *pEvent;   
pGraph->QueryInterface(IID_IMediaEvent,   (void   **)&pEvent);  
 
      
// 创建 Graph 从一个硬盘文件  
pGraph->RenderFile(L"d:\\kk4.mpg",   NULL);  
 
      
// 调用接口方法 运行图表   
pMediaControl->Run();    
 
      
// 调用接口方法 等待图表结束       
long   evCode;     
pEvent->WaitForCompletion(INFINITE,   &evCode);  
 
      
// 释放调用的对象及其接口  
pMediaControl->Release();     
pEvent->Release();     
pGraph->Release();  
 
 
// 释放COM库所使用的资源  
CoUninitialize();  
 
 
}

转载于:https://www.cnblogs.com/seacode/archive/2010/07/14/1777505.html

(转)DirectShow9在VS2005或vc6.0下编译出现问题的解决方法相关推荐

  1. VC6.0下打开文件失败的解决方法

    虽说VC6已经算很古老了,但是他简单使用的环境还是让现在很多人还在使用.但是,在我们刚安装好使用的时候,经常会遇到这样的问题,VC6中打开文件或打开工程会报内存错误的问题.这个问题足以让VC下编程的初 ...

  2. Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法

    Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法如下: 1.打开"gFTP-FTP-属性-常规-远程字符集": 2.将远程字符集设置为:gb2312,gbk ...

  3. android webview权限申请_Android应用开发之android 6.0下webview的定位权限设置方法

    本文将带你了解Android应用开发android 6.0下webview的定位权限设置方法,希望本文对大家学Android有所帮助. 如下所示: WebView webView =   (WebVi ...

  4. 在Windows 7下安装Oracle 11g的解决方法

    在Windows 7下安装Oracle 11g的解决方法 前不久卸载掉了自己的Windows Vista系统,装上了Windows7 旗舰版,在装机过程中也遇到了很多问题,有些问题是自己不曾遇到过的, ...

  5. linux redis php,Linux下编译redis和phpredis的方法

    这篇文章主要介绍了Linux下编译redis和phpredis的方法,分析了redis的下载,编译,安装及遇到的问题与相应的解决方法,需要的朋友可以参考下 本文讲述了Linux下编译redis和php ...

  6. php alias 报错,PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    本文讲述了PHP(FastCGI)在Nginx的alias下出现404错误的解决方法.分享给大家供大家参考,具体如下: 在Nginx的官方wiki中如下描述 The alias directive c ...

  7. ubuntu 破解mysql密码_Ubuntu下忘记MySQL root密码解决方法

    Linux下忘记MySQL root密码解决方法 忘了mysql密码,从网上找到的解决方案记录在这里. 编辑mysql的配置文件/etc/mysql/my.cnf,在[mysqld]段下加入一行&qu ...

  8. mysql8.0.4以后_mysql官方源从8.0.3直接通过yum源升级到8.0.4后启动不成功解决方法...

    mysql官方源从8.0.3直接通过yum源升级到8.0.4后启动不成功解决方法 发布时间:2020-05-13 14:57:06 来源:亿速云 阅读:156 作者:三月 下面讲讲关于mysql官方源 ...

  9. 关于vc++6.0“打开文件“功能问题的解决方法

    关于vc++6.0"打开文件"功能问题的解决方法 一.先下载FileTool.exe 二.安装外接程序 1.    运行 FileTool.Exe ,实际上是解压一个filetoo ...

最新文章

  1. 安卓webview子线程网络请求,怎么获得结果?
  2. Android开发之RecyclerView动态添加item长按删除item源码
  3. java类与接口练习
  4. linux保存编辑信息,linux系统编辑神器 -vim用法大全
  5. android日记本实训报告,实训笔记
  6. 性能测试:基础(5)
  7. 2019-02-25 SQL:cast(itemvalue as decimal(19,4))
  8. 解析字符串获取路径_node学习--path 路径模块
  9. (zz)最大子序列和问题
  10. excel 直接查询企查查数据_EXCEL在多表中查询数据(函数中引用工作表的办法)...
  11. ShortCut Exploit Builder
  12. socket创建失败_python3从零学习-5.8.1、socket—底层网络接口
  13. 擦地机器人修理_第一次修扫地机器人
  14. TextCNN代码解读及实战
  15. 长截图、识别图片里的文字,不用装其它软件!
  16. 围棋规则 斜着连成一条线_进入围棋世界的第一步
  17. B2C是什么意思?什么是B2C
  18. 使用 Vue SVG 快速绘制曲线图(带动画)
  19. 你真以为贪吃蛇是个简单的游戏?
  20. java PDF转换图片(IMG)

热门文章

  1. 算法学习经典例题整理
  2. java个人支付系统(springboot)
  3. SiamMask算法详解
  4. 哇靠靠,这也行?零基础DIY无人驾驶小车(一)
  5. 单选按钮带文字_计算机二级MS office高级应用历年真题操作题文字解析
  6. python的基础命令_Python必学之命令行常用的命令
  7. wxpython按钮形状如何修改_Python图形化界面入门教程 - 使用wxPython自定义表
  8. java和python混合编程_浅谈C++与Java混合编程
  9. python环境配置opencv_【Python】python2.7 安装配置OpenCV2
  10. c# mongodb or查询_C# MongoDB 查询方法