Login dark
title: 在vc6.0中配置directshow
author: 零贰
date: 2020-08-09 13:04:17
category: [编程代码]
tags: [VC6,代码,学习]

在vc6.0中配置directshow

@TOC

_

正文

用vc6.0从摄像头从采集图像,本人以前没有做过,就在网上搜搜了,网友们说用directshow做简单,于是就开始搭建编译环境了,废话不多说了,开始了!一下是我在网上搜到的和我总结的(不是很好,请谅解)

  1. 操作系统xp(我的电脑)
  2. 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

2.http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.2.cab

3.http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.3.cab

4.http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.4.cab

5.http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.5.cab

6.http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.6.cab

7.http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.7.cab

8.http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.8.cab

9http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.9.cab

10http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.10.cab

11http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.11.cab

12http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.12.cab

13http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.13.cab

14http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.bat(可以另存为 速度快)

15http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/Extract.exe

把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等文件即可!

  1. 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的版本!
  2. 编译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下边就可以了。

  1. 配置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++下)配置完毕!

_

  • 原文链接
  • 注:知识搬运,供学习交流使用,侵联删!

_