vs2008配置DirectShow

2009年10月16日   在前段时间,我写了一个关于DirectShow在VS2008中使用的文章。当然,我当时使用的是在vs2008 中自带的 WinSDK6.0a,而没有用CCameraDS中带有的DirectShow。问题是解决了,但有一点比较麻烦的,是要修改 WinSDK6.0a中的qedit.h,   引用:   DirectShow在vs2008 Vista中的使用   再修改qedit.h 中引用 dxtrans.h 的部分,要求注释掉   #include "oaidl.h"   #include "ocidl.h"   //#include "dxtrans.h"   #include "amstream.h"   在编译后,编译提示就会有一句:   Topile qedit.h you must install the DirectX 9 SDK, to obtain the dxtrans.h header.   这样的提示,虽然暂时还没有发现因此改动而引起的错误,但是将来用SDK时还是有可能有问题的。   今天看opencv中文网站 时发现在4月份时CCameraDS又更新了程序,使得函数OpenCamera能够直接控制   被打开摄像头的分辨率,比较方便,哈哈,更新程序好了。这次就直接使用CCameraDS自带的DirectShow。   参考了网上的一篇文章《 OpenCV学习笔记(6)基于 VC OpenCV DirectShow 的多个摄像头同步工作》   // 使用说明:   // 在 VC6 开发环境下的使用说明:   // 1. 将CameraDS.h CameraDS.cpp以及目录DirectShow复制到你的项目中   // 2. 菜单 Project->Settings->Settings for:(All configurations)->C/C ->Category(Preprocessor)->Addit ional include directories   // 设置为 DirectShow/Include   // 3. 菜单 Project->Settings->Settings for:(All configurations)->Link->Category(Input)->Additional library directories   // 设置为 DirectShow/Lib   // 在 VS2005/2008 开发环境下的使用说明:   // 1. 将CameraDS.h CameraDS.cpp复制到你的项目中   // 2. 将CameraDS附带的DirectShow目录复制到你的opencv根目录下。   // 3. 菜单Tools–>Options–>Projects and Solutions–>VC Directories–>Show Directories for->Include Files,   // 把(你的opencv根目录)/DirectShow/Include添加到   // $(VCInstallDir)PlatformSDK/include和$(FrameworkSDKDir)include之下的任意位置,(最简单就是把它下移到最下面)   // 4. 菜单 Tools–>Options–>Projects and Solutions–>VC Directories–>Show Directories for->Library Files,   // 把(你的opencv根目录)/DirectShow/Lib添加进出就可以了。也可参考使用说明3。   // 5. 最后,把 Project->Properties->Configuration Properties–> C/C ->Common->Additional Include Directories里面的   // 原来的内容DirectShow/Include 删除,   // 同样的,把 Project->Properties->Configuration Properties–> Linker ->Common->Additional Library Directories里面的   // 原来的内容DirectShow/Lib 删除,然后重新编译。   至于为什么这样做,文章中也清晰说明,也有另一种方案解决。   引用:   在编译以上程序时,可能会出现以下几种错误(参见 http://topic.csdn/u/20081022/12/30fb745f-332b- 42f7-bbee-02a760c48132.html):   1> ../../../winnt.h(222) : error C4430: missing type specifier - int assumed. Note: C does not support   2> ../../../winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID'   3> ../../../winnt.h(5940) : error C2146: syntax error : missing ';' before identifier 'Buffer'   对于第1类错误,可以用wd4430来解决,具体的在Project -> Properties -> Configuration Properties -> Linker -> Command Line的 Additional Options 中添加‘/wd4430’ 即可。   对于第2类错误,一般可通过调整 DirectShow/Include 在 Tools -> Options -> Projects and Solutions -> VC Directories -> Show Directories for –> Include Files 中的位置(把它下移到最下面),然后把 Project -> Properties -> Configuration Properties –> C/C 中的 Additional Include Directories 里面的内容(../../../../include)删掉,重新编译,PVOID的错误就会消失,原因如下:   POINTER_ 是一个宏,在位编译下起作用,它包含在SDK目录下的BASETSD.H中(Microsoft Visual Studio 8/VC/PlatformSDK/Include/basetsd.h(23):#define POINTER_ __ptr),但DXSDK自己也带了一个basetsd.h,里面没有定义POINTER_,从而导致出错,只需要改变 include files 的优先级即可。   当然,也可以改写 winnt.h 中的代码,在下面这两行:   typedef void *PVOID;   typedef void *POINTER_ PVOID;   之前增加一行:   #define POINTER_ __ptr   不过最好不要轻易改写 winnt.h 。 最后,说说关于新版的OpenCV2.0 在 VS2008中的使用。参考文章《 How to install and use OpenCV 2.0 in Visual Studio2008(VS2008)》   OpenCV2.0 Windows版本下载地址:   http://www.opencv./download/OpenCV-2.0.0a-wi n32.exe (for win32)   这个版本OpenCV2.0 是在2009年10月1日发布的。   安装后发现,其Lib目录中都是 .dll.a 文件,好像是库的入口文件,据网上说这些文件是不能直接使用的,要自己用CMake重新编译才能使用,编译可参考上面的文章《How to install and use OpenCV 2.0 in Visual Studio2008(VS2008)》。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值