directshow配置总结.docx_第1页
directshow配置总结.docx_第2页
directshow配置总结.docx_第3页
directshow配置总结.docx_第4页
directshow配置总结.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

l dxtrans.h文件找不到(在qedit.h文件中包含dxtrans.h时出现的错误)solution:(1)这是VS2008里的在D:Program FilesMicrosoft Visual Studio 9.0搜索dxtrans.h复制到 :Program FilesMicrosoft Visual Studio 9.0VCinclude(2) 或者在引用 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.hl error LNK2001: unresolved external symbol void _stdcall FreeMediaType(struct _AMMediaType &) (?FreeMediaTypeYGXAAU_AMMediaTypeZ)*.obj : error LNK2001: unresolved external symbol void _stdcall FreeMediaType(struct _AMMediaType &) (?FreeMediaTypeYGXAAU_AMMediaTypeZ)*.obj : error LNK2001: unresolved external symbol public: _thiscall CMediaType:CMediaType(void) (?1CMediaTypeQAEXZ)*.obj : error LNK2001: unresolved external symbol public: void _thiscall CMediaType:SetSubtype(struct _GUID const *) (?SetSubtypeCMediaTypeQAEXPBU_GUIDZ)*.obj : error LNK2001: unresolved external symbol public: void _thiscall CMediaType:SetType(struct _GUID const *) (?SetTypeCMediaTypeQAEXPBU_GUIDZ)*.obj : error LNK2001: unresolved external symbol public: _thiscall CMediaType:CMediaType(void) (?0CMediaTypeQAEXZ)*.obj : error LNK2001: unresolved external symbol int _stdcall lstrlenWInternal(unsigned short const *) (?lstrlenWInternalYGHPBGZ)编译DirectShowSamplesC+DirectShowBaseClasses工程,并在自己的程序中链接生成的lib文件。l Linking.CDXGraph.obj : error LNK2001: unresolved external symbol _CLSID_FilterGraphCDXGraph.obj : error LNK2001: unresolved external symbol _IID_IGraphBuilderCDXGraph.obj : error LNK2001: unresolved external symbol _TIME_FORMAT_MEDIA_TIMECDXGraph.obj : error LNK2001: unresolved external symbol _IID_IMediaSeekingCDXGraph.obj : error LNK2001: unresolved external symbol _IID_IVideoWindowCDXGraph.obj : error LNK2001: unresolved external symbol _IID_IBasicAudioCDXGraph.obj : error LNK2001: unresolved external symbol _IID_IBasicVideoCDXGraph.obj : error LNK2001: unresolved external symbol _IID_IMediaEventExCDXGraph.obj : error LNK2001: unresolved external symbol _IID_IMediaControlCDXGraph.obj : error LNK2001: unresolved external symbol int _cdecl wsprintfWInternal(unsigned short *,unsigned short const *,.) (?wsprintfWInternalYAHPAGPBGZZ)Debug/VOD_Player.exe : fatal error LNK1120: 10 unresolved externalsError executing link.exe.把strmiids.lib包含进工程一. 第一步,设置INCLUDE及LIB目录在把dxsdk中提供的baseclass编译通过后,用四种方式编译,会分别生成四个lib,一般只用到了其中的Debug和Release文件,在tool|option|vc+ directories中包含的files中设置如下。这里需要加入得include files有四种:D:SDKDXSDKIncludeD:SDKDXSDKSamplesC+DirectShowBaseClassesD:SDKDXSDKSamplesC+DirectShowCommonD:SDKDXSDKSamplesC+CommonInclude (这里可能是Common)(接下来才是VC原来的)在后边的library files中也需要增加三到四种的文件:D:SDKDXSDKLibD:SDKDXSDKSamplesC+DirectShowBaseClassesDebug (基类编译前,这两个可以不设置)D:SDKDXSDKSamplesC+DirectShowBaseClassesRelease(接下来才是VC原来的)二. 第二步,编译BaseClasses基类本人使用的是VS2005,要使用DirectShow进行编程,需要对环境进行必要的配置。第一步:对dssdk中的baseclass.sln进行编译,生成需要的debug和release文件,具体步骤如下:在VS6中,安装DirectShow9c版本之后,直接打开BaseClass中的Vc6工程baseclasses.dsw文件,直接编译即可,编译Debug Release Debug_Unicode Release_Unicode四个版本,都需要进行额外的设置(头文件或者链接库目录设置)。DirectShow的BaseClass中已经带了VS2005的工程文件baseclasses.sln,在vs2005中打开此文件,提示你进行必要的工程转换,转换之后开始编译,编译过程一般会出现下面两个问题:(1)C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludewinnt.h(222) : error C2146: syntax error : missing ; before identifier PVOID64 (2)error C4430: missing type specifier - int assumed. Note: C+ does not support default-int(3)error C2065: Count : undeclared identifier第一类问题的解决:project-BaseClasses properties-configuration-C/C+ - General-Additional Include Directories里面的内容(.,.include)删掉,重新编译,PVOID64的错误消失,原因如下:POINTER_64 是一个宏,在64位编译下起作用,它包含在SDK目录下的BASETSD.H中(Microsoft Visual Studio 8VCPlatformSDKIncludebasetsd.h(23):#define POINTER_64 _ptr64),但DXSDK自己也带了一个basetsd.h,里面没有定义POINTER_64,从而导致出错,只需要改变include files的优先级即可。当然,也可以改写winnt.h中的代码,将typedef void *PVOID;typedef void * POINTER_64 PVOID64;改成typedef void *PVOID;typedef void * POINTER_64;typedef void * PVOID64;第二类问题的解决:错误发生在:operator=(LONG);函数定义中,这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整形;但是vs2005不支持默认整形,解决这个问题不能修改每个没有显示指示返回值类型的函数地方,可以用wd4430来解决;具体的在工程选项中的c+/Command Line中添加/wd4430即可。 第三个错误发生在for循环中,vc6中for循环中定义的变量相当于在for外面定义,可以在for之外地方使用;但是vs2005for循环中定义变量相当于域变量,只能在for循环中使用。要解决这个问题,可以通过修改vs2005的工程选项:”Project Option” - “ C+ ” - “Language” - “Force Comformance in For Loop Scrope” 设置为No即可。 完成上面的设置,BaseClass工程基本可以编译通过了。三. 第三步,实战DirectShow配置(1)使用VC向导生成一个具体项目,如Win32 Dynamic-Link; 注意字符集设为”未设置“ 输出设置为$(OutDir)$(ProjectName).ax(2)包含头文件streams.h; streams.h中间接包含了windows.h,uuids.h,ddraw.h等头文件,所以大多情况下,不需要其它头文件。某些情况下,如果编译出现问题,可以加入atlbase.h,initguid.h,stdio.h,stdlib.h(3)在VC的菜单中选择Project|Settings|C/C+,在弹出的对话框中的Category中选择Code generation,然后在Calling convention中选择_stdcall;(4)使用多线程语言运行时库,即在VC的菜单中选择Project|Settings|C/C+,在弹出的对话框中的Category中选择Code generation,然后在Use run-time library中,Debug版选择Debug Multithreaded,Release版选择Multithreaded。(5)配置必要的链接库文件,即在VC的菜单中选择Project|Settings|Link,在弹出的对话框中的Category中选择General,然后在Object/library modules中输入如下代码: Debug版本 strmbasd.lib, msvcrtd.lib, winmm.lib Release版本 strmbase.lib, msvcrt.lib, winmm.lib并且选中Ignore all default libraries。(PS:这句有点误导)DirectShow SDK建议,DirectShow应用程序应该至少连接库文件strmiids.lib和quartz.lib。前者定义了DirectShow标准的CLSID和IID,后者定义了导出函数AMGetErrorText(如果应用程序中没有使用到这个函数,也可以不连接这个库)。如果程序里包含了头文件streams.h,则一般库文件还要连接strmbasd.lib、uuid.lib、winmm.lib、msvcrt(d).lib 注意:必须设置“忽略所有默认库“为”否“,否则会出现DS-Render.def : error LNK2001: 无法解析的外部符号 DllCanUnloadNowDS-Render.def : error LNK2001: 无法解析的外部符号 DllGetClassObject(6)如果按照上述操作仍有如下类似的错误提示error LNK2001: unresolved external symbol _CLSID_FilterGraph请在link下添加strmiids.lib和quartz.lib,特别是在2003开发环境下应当添加该链接库。因为DirectShow SDK建议,DirectShow应用程序应该至少连接库文件strmiids.lib和quartz.lib。前者定义了DirectShow标准的CLSID和IID,后者定义了导出函数AMGetErrorText(如果应用程序中没有使用到这个函数,也可以不连接这个库)。如果程序里包含了头文件streams.h,则一般库文件还要连接strmbasd.lib、uuid.lib、winmm.lib。还必须加入 #include 否则会出现 无法解析的符号 _CLSID_XXXX出现下述错误时error LNK2001: unresolved external symbol class ATL:CAtlBaseModule ATL:_AtlBaseModule (?_AtlBaseModuleATL3VCAtlBaseModule1A) Project|Settings|Link 在Debug下包含atls.lib ,在Release下添加atlsd.lib 库。出现下述错误时c:microsoft directx 9.0 s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论