directshow安装
![directshow安装](https://img.360docs.net/img7a/03o690kjij0hapr2o1p4-a1.webp)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Visual范例宝典中采用的DirectX SDK为Microsoft Show SDK(April 2006),Direct Show SDK为DirectX SDK Extras Frebruary 2005
在这里和大家分享下DirectShow9
DirectX9.0c已经将DShow分离出去了,下载时请选DirectX9.0b或者一下一个单独的,地址为:
/SDK/DX9SDK.rar
下面是配置过程:
1,使用VC向导生成一个具体项目,如Win32 Dynamic-Link;
2,包含头文件streams.h;
3,在VC的菜单中选择Project|Settings|C/C++,在弹出的对话框中的Category中选择Code generation,然后在Calling convention中选择_stdcall;
4,使用多线程语言运行时库,即在VC的菜单中选择Project|Settings|C/C++,在弹出的对话框中的Category中选择Code generation,然后在Use run-time library中,Debug版选择Debug Multithreaded,Release版选择Multithreaded。
5,配置必要的链接库文件,即在VC的菜单中选择Project|Settings|Link,在弹出的对话框中的Category 中选择General,然后在Object/library modules中输入如下代码:
Debug版本strmbasd.lib, msvcrtd.lib, winmm.lib
Release版本strmbase.lib, msvcrt.lib, winmm.lib
并且选中Ignore all default libraries。
DirectShow SDK建议,DirectShow应用程序应该至少连接库文件strmiids.lib和quartz.lib。前者定义了DirectShow标准的CLSID和IID,后者定义了导出函数AMGetErrorText(如果应用程序中没有使用到这个函数,也可以不连接这个库)。如果程序里包含了头文件streams.h,则一般库文件还要连接strmbasd.lib、uuid.lib、winmm.lib。
6,将DirectX SDK的Include和Lib目录配置到VC的系统目录中去,并且放在标准的VC目录之前,以保证编译器能够拿到最新版本的源文件。选择Tools|Options|Directories,在弹出的对话框中的Show directories for中选择Include files,配置如下(假设DirectX SDK安装在D:\\DXSDK目录下,VC安装在C:\\Program Files下):
D:\\DXSDK\\Include
D:\\DXSDK\\SAMPLES\\C++\\DIRECTSHOW\\BASECLASSES
D:\\DXSDK\\SAMPLES\\C++\\COMMON\\INCLUDE
C:\\Program Files\\Microsoft Visual Studio\\VC98\\INCLUDE
C:\\Program Files\\Microsoft Visual Studio\\VC98\\MFC\\INCLUDE
C:\\Program Files\\Microsoft Visual Studio\\VC98\\ATL\\INCLUDE
再在Show directories for中选择Library files,配置如下:
D:\\DXSDK\\Lib
D:\\DXSDK\\SAMPLES\\C++\\DIRECTSHOW\\BASECLASSES\\DEBUG
D:\\DXSDK\\SAMPLES\\C++\\DIRECTSHOW\\BASECLASSES\\RELEASE
C:\\PROGRAM FILES\\MICROSOFT SDK\\LIB
C:\\Program Files\\Microsoft Visual Studio\\VC98\\LIB
C:\\Program Files\\Microsoft Visual Studio\\VC98\\MFC\\LIB
7,因为DirectShow应用程序是一种COM客户程序,因此在调用任何COM函数之前调用CoInitialize()(或CoInitializeEx)函数进行COM库的初始化(一般是在应用程序启动的时候调用一次),在结束COM 库使用时调用CoUninitialize()函数进行反初始化(一般是在应用程序退出前调用一次)。
----------------------------
配置时的问题【一定要注意】
1。include和lib的路径前后顺序一定要“非常严格按照上面顺序排列”,否则
1.1 DXSDK\\Include和VC98\\INCLUDE有头文件名是重名的,例如control.h,strmif.h。所以要优先选择DXSDK的文件声明。
2.1 DXSDK\\Lib和VC98\\LIB对DWORD_PTR 这个数据类型的声明顺序出现编译上连接的歧异!!!!
2。BASECLASSES\\DEBUG和BASECLASSES\\RELEASE目录和目录里面是内容是没有的,如果你
在应用程序中使用了BASECLASSES里面的class,function,filter,interface,就要先用VC编译baseclasses.dsw,编译时请分别选定DEBUG和RELEASE,因为baseclasses.dsw有4个版本,而且默认下都不是DEBUG和RELEASE。编译后生成两个重要文件:strmbasd.lib(Debug),STRMBASE.lib (Release),在以后将用到。