在Windows7和Visual Studio 2010中编译DirectShow例程GrabBitmaps的问题

一开始提示的编译错误是:

fatal error C1083: 无法打开包括文件:“dxtrans.h”: No such file or directory

看了一下是在qedit.h中引用了这个头文件,翻遍了DirectX SDK也没有找到dxtrans.h这个头文件,上网查了一下是在DirectShow的变迁过程中,新版本中已经去掉了这个头文件,难道一定要安装旧版的DirectX SDK吗?可以用如下的折中解决方案:

在#include <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__

此时再编译可能会出现如下链接错误,

1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_RGB24
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_RGB24
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _MEDIATYPE_Video
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _CLSID_FilterGraph
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _CLSID_AsyncReader
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _CLSID_SampleGrabber
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _IID_ISampleGrabberCB
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _IID_IBaseFilter
1>strmbasd.lib(wxdebug.obj) : error LNK2019: 无法解析的外部符号 _IID_IBaseFilter,该符号在函数 "void __stdcall DisplayType(char *,struct _AMMediaType const *)" (?DisplayType@@YGXPADPBU_AMMediaType@@@Z) 中被引用
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _IID_IFileSourceFilter
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _IID_IMediaSeeking
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _IID_IVideoWindow
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _IID_IMediaControl
1>GrabBitmaps.obj : error LNK2001: 无法解析的外部符号 _IID_IMediaEvent
1>strmbasd.lib(mtype.obj) : error LNK2001: 无法解析的外部符号 _FORMAT_WaveFormatEx
1>strmbasd.lib(mtype.obj) : error LNK2001: 无法解析的外部符号 _MEDIATYPE_Audio
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 _MEDIATYPE_Audio
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 _IID_IPin
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_MPEG1Packet
1>strmbasd.lib(wxdebug.obj) : error LNK2001: 无法解析的外部符号 _FORMAT_VideoInfo
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_Overlay
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_ARGB32
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_RGB32
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_RGB555
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_RGB565
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_RGB8
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_RGB4
1>strmbasd.lib(amvideo.obj) : error LNK2001: 无法解析的外部符号 _MEDIASUBTYPE_RGB1


这是因为缺少了一个链接库,在链接附加项里面添加strmiids.lib即可。


另外,好像DirectX SDK (Aug 2007)这个版本比较稳定和常用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习SQLite源码是一种深入了解SQLite数据库引擎的方法。通过仔细阅读和研究SQLite源码,您可以了解SQLite的内部工作原理、数据结构和算法,并深入了解数据库管理系统的实现细节。下面是一些学习SQLite源码的建议方法和步骤: 1. 阅读SQLite文档:在开始学习SQLite源码之前,建议您先阅读官方提供的SQLite文档。文档提供了关于SQLite的基本知识和用法,这将帮助您更好地理解源码。 2. 下载和编译源码:从SQLite官方网站下载最新的源码,并按照官方提供的指南进行编译。确保您选择了与您的操作系统和编译器兼容的版本。 3. 了解主要文件和目录结构:深入研究SQLite源码之前,建议您先了解一下主要文件和目录的结构。这将有助于您在源码进行导航和查找。 4. 选择感兴趣的部分:SQLite源码非常庞大,包含了许多功能和模块。为了更有效地学习,您可以选择感兴趣的部分进行深入研究,比如查询优化、事务管理或存储引擎等。 5. 调试和跟踪代码:在学习源码过程,使用调试器和日志工具来跟踪代码的执行流程和数据变化。这将有助于您理解源码的代码逻辑和算法。 6. 参考已有的文档和资源:除了阅读官方文档之外,还可以参考一些优秀的书籍、教程和博客,以获取更多关于SQLite源码学习的指导和资料。 通过以上的方法和步骤,您将能够更好地理解和学习SQLite源码。不过,请注意,学习源码需要耐心和时间,因此建议您从基础开始,逐渐深入,不要急于求成。祝您在学习SQLite源码的过程取得成功!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值