title: 在vc6.0中配置directshow
author: 零贰
date: 2020-08-09 13:04:17
category: [编程代码]
tags: [VC6,代码,学习]
在vc6.0中配置directshow
@TOC
_
正文
用vc6.0从摄像头从采集图像,本人以前没有做过,就在网上搜搜了,网友们说用directshow做简单,于是就开始搭建编译环境了,废话不多说了,开始了!一下是我在网上搜到的和我总结的(不是很好,请谅解)
- 操作系统xp(我的电脑)
- Windows SDK版本:Windows Server 2003 PSDK February 2003 Edition。下载链:1.http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1.cab
14http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.bat(可以另存为 速度快)
把SDK包(13个cab+2=15个文件)下载,将所有压缩包.cab文件保存到一个目录下(如c:psdktemp),下载BAT文件(PSDK-FULL.bat)和Extract.exe文件。注意:这两个文件也要和压缩包在同一目录下。在命令行模式进入前面建立的临时的目录,如:cd c:psdktemp 执行BAT文件(PSDK-FULL.bat)解压整个映像。执行BAT文件(PSDK-FULL.bat)如:c:psdktemp> psdk-full c:psdk 运行解压缩后所在文件夹(上面的例子是C:psdk)里的Setup.exe文件安装Platform SDK。如果出现vision未定义错误,则打开setup目录,安装CoreSDK-x86.msi等文件即可!
- DirectX SDK 版本:Microsoft DirectX 9.0 SDK (Summer 2004)下载地址:http://download.microsoft.com/download/7/e/9/7e9f48c6-f28a-469b-9b8e-cc84032efbd4/dxsdk_sum2004.exe DirectX 9.0 SDK Update - (Summer 2004)的版本是因为这个版本是DirectX SDK中最后一个整合了DirectShow的版本!
- 编译BaseClasses
a) 首先打开VC6.0,新建一个项目,项目类型选择Win32 Static Library,这里需要说明一下,如果要使用VC6.0的来编译BaseClasses,因为该版本下边没有VC6.0的工程文件,所以最好自己创建工程文件,来完成编译过程,创建一个Win32 Static Library项目;
b) 设置相关参数:
这里应该是不需要,为了保证编译好的Lib的名字和网上大部分配置相同,点击Project->Settings,在Library标签里面设置相关的输出,Output file name:默认是项目名称,本人是这样修改的:Debug版本:Debugstrmbasd.lib
Release版本:Releasestrmbase.lib
c) 配置DirectShow针对所有项目的环境:
打开Tools->Options ->Directories,在Show Directories for栏:
首先选择Include files:添加如下项目(注意:添加的项目必须在原有项目的前面)
DirectX SDK安装目录Include
PS:如果DirectShow与dx-sdk是分开的,需加入DirectShow的Include
DirectX SDK安装目录SamplesC++Common
DirectX SDK安装目录SamplesC++DirectShowBaseClasses
Windows SDK安装目录Include
然后选择Library files:添加如下项目(注意:添加的项目必须在原有项目的前面)
DirectX SDK安装目录LIB
PS:如果DirectShow与dx-sdk是分开的,需加入DirectShow的LIB
Windows SDK 安装目录LIB
全部添加完毕后,点击OK。
d) 错误信息:
错误信息如下:
wxutil.cpp(277) : error C2065: 'COINIT_DISABLE_OLE1DDE' : undeclared
identifier
这个问题我搜了网上很多地方,后来发现了一个替代解决方案,变量未定义,但是有办法解决,找到源代码wxutil.cpp的277行:
hr = (*pCoInitializeEx)(0,COINIT_DISABLE_OLE1DDE );
将变量COINIT_DISABLE_OLE1DDE改成整数4;
hr = (*pCoInitializeEx)(0,4);
这样就可以编译通过了,在编译的时候记得编译两个版本,版本的切换在菜单Build->Set Active Configuration里面可以切换激活版本,就可以编译两个不同的版本到项目对应的目录下。然后把编译好的两个文件夹Debug和Release放到对应的BaseClasses文件夹下边: DirectX SDK安装目录SamplesC++DirectShowBaseClasses下边就可以了。
- 配置DirectShow针对所有项目的环境:
a) 添加编译出的两个库文件:
我们已经编译出了两个库文件,现在我们把这两个库文件添加进来。打开Tools->Options->Directories,选择Library files
添加如下项目(注意:添加的项目必须在原有项目的前面)
DirectX SDK安装目录SamplesC++DirectShowBaseClassesDebug
DirectX SDK安装目录SamplesC++DirectShowBaseClassesRelease
b) 项目设置
创建一个项目过后,首先要引入项目所需要的库文件:
选择Project->Settings->Link标签,然后在选项Object/library modules:中输入以下的几个Lib
Debug:strmbasd.lib strmiids.lib quartz.lib
Release:strmbase.lib strmiids.lib quartz.lib
注:网上参考资料如果要引用头文件streams.h才需要BaseClasses相关内容,如果不引用不需要前面两个库,我没有验证过,而且如果引入头文件streams.h,还需要另外两个库uuid.lib和winmm.lib,我的基本配置:strmbasd.lib
strmiids.lib quartz.lib uuid.lib winmm.lib几个库文件
到此,DirectShow 环境(VC6.0++下)配置完毕!
_
- 原文链接
- 注:知识搬运,供学习交流使用,侵联删!
_