出现问题 winnt.h中的错误
在#include "CameraDS.h" 前添加
#define POINTER_64 __ptr64
另外一个问题来源自ywt1126的新浪博客 :CameraDS 类在VS2010下的一些问题及解决方案
然后就是CameraDS的问题了。首先是论坛置顶帖里于老师编写的CameraDS类不能在Vista/Win7+VS2008环境里编译通过。
经查,是 由于VS2008安装时自带的Windows SDK 6.0包含的是DX10的DirectShow,而CameraDS.zip包里包含的是DX9的DirectShow。
所以我们可以删掉 CameraDS包里的DirectShow目录,而改用Windows SDK 6.0带的DirectShow。
因此,在Project->Settings->Settings for:(All configurations)的C/C++和Link中,把所有的DirectShow/Include,变成 $(FrameworkSDKDir)Include;把所有的DirectShow/Lib,变成 $(FrameworkSDKDir)Lib,并且修改CameraDS.h文件,把引用 "DirectShow/Include/qedit.h" 改成 <qedit.h>,把引用 "DirectShow/Include/dshow.h" 改成 <dshow.h>。
存盘后编译仍然会有一个错误,说找不到dxtrans.h文件,这里有解决办 法:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2617687& SiteID=1。我用的是其中的不修改qedit.h文件的办法,在包含qedit.h的语句前加入五行代码:
#pragma include_alias( "dxtrans.h", "qedit.h" )
#define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__
#include<qedit.h>
在操作过程中
采用了两种方式
1,按照ywt1126所述方法$(FrameworkSDKDir)替换DirectShow/Include 出现一个问题无法打开包括文件 qedit.h
>e:\work1\binocular stereo vision\doublecamera_0914test\dstest\camerads.h(27): fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory
1> 正在生成代码...
1> 正在编译...
1> dstest.cpp
1>e:\work1\binocular stereo vision\doublecamera_0914test\dstest\camerads.h(27): fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory
1> 正在生成代码..
从directsho/include复制到工程目录下,//#include<qedit.h>替换为//#include "qedit.h",问题解决。新问题是找不到strmbased.lib
1> 正在生成代码...
1> 所有输出均为最新。
1>LINK : fatal error LNK1104: 无法打开文件“strmbasd.lib”
从如下地址
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug
找到strmbasd.lib并复制到工程文件目录 运行通过
2,更改配置如下:
include:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\common
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include
lib
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib