您的位置:首页 > 其它

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

2012-07-29 21:11 302 查看
一开始提示的编译错误是:

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)这个版本比较稳定和常用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐