在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
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等文件即可!
-
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版本:Debug\strmbasd.lib
Release版本:Release\strmbase.lib
c) 配置DirectShow针对所有项目的环境:
打开Tools->Options ->Directories,在Show Directories for栏:
首先选择Include files:添加如下项目(注意:添加的项目必须在原有项目的前面)
DirectX SDK安装目录\Include
PS:如果DirectShow与dx-sdk是分开的,需加入DirectShow的Include
DirectX SDK安装目录\Samples\C++\Common
DirectX SDK安装目录\Samples\C++\DirectShow\BaseClasses
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安装目录\Samples\C++\DirectShow\BaseClasses下边就可以了。
-
配置DirectShow针对所有项目的环境:
a) 添加编译出的两个库文件:
我们已经编译出了两个库文件,现在我们把这两个库文件添加进来。打开Tools->Options->Directories,选择Library files
添加如下项目(注意:添加的项目必须在原有项目的前面)
DirectX SDK安装目录\Samples\C++\DirectShow\BaseClasses\Debug
DirectX SDK安装目录\Samples\C++\DirectShow\BaseClasses\Release
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++下)配置完毕!
- 原文链接
- 注:知识搬运,供学习交流使用,侵联删!