DirectxShow是什么我就不说了。有一本《DirectShow开发指南》书,写得不错,它也有配套的例子。 要重现它的例子,必须
第一步:安装DirectxShow相关的“框架”。
这个软件不好找,不过我把它做成了“DXShow开发版.rar”压缩文件。请评论本文后我就给出百度共享盘地址。
第二步:“DXShow开发版.rar”中又包含有几个压缩文件,请一直解压到不能再解为止,然后把其中的一个"Directx“文件压拷贝到 D: ,并将Dirctx目录名改名为:“DXSDK”。
第三步:用VC6把D:DXSDKSamplesC++DirectShowBaseClasses工程进行编译。编译的目的是要生成两个lib文件:StrmBasd.lib/StrmBase.lib 。
Debug文件夹中的文件是: strmbasd.lib
Release文件夹中的文件是: STRMBASE.lib
注意啊,我在编译生成这两个文件时,基本上弄了几个小时哦!因为不管我如何更改工程的设置,都生成不了Debug和Release目录,它默认只生成Debug_Unicode目录。VC真TMD坑爹!
那么在哪里改呢?方法:在工具栏上右击鼠标,选择组建,就可以选择配置。
只有这个方法才可以得到Debug、Release、或者Debug_Unicode、Release_Unicode这几个目录,并得到它们各自的lib文件。
但是工程它只认Debug目录和Release目录中的lib文件,你将这两个目录中的lib文件拷贝到D:DXSDKLib目录之中。
第四步:开始复盘教材所带的实例文件。
打开VC,新建一个MFC AppWizard单文本文件。如何把教材实例代码弄进来,我就不说了,我只说重要的配置部分:
(1)在VC的菜单中选择 “工程”|“设置"|C/C++,在弹出的对话框中的Category(分类)中选择Code generation,然后在Calling convention中选择_stdcall;
(2)使用多线程语言运行时库,即在VC的菜单中选择Project(工程)|Settings(设置)|C/C++,在弹出的对话框中的Category(分类)中选择Code generation,然后在Use run-time library中,Debug版选择Debug Multithreaded Dll,Release版选择Multithreaded Dll。
(3)配置必要的链接库文件,即在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(忽略全部默认库)。
DirectShow SDK建议,DirectShow应用程序应该至少连接库文件strmiids.lib和quartz.lib。前者定义了DirectShow标准的CLSID和IID,后者定义了导出函数AMGetErrorText(如果应用程序中没有使用到这个函数,也可以不连接这个库)。如果程序里包含了头文件streams.h,则一般库文件还要连接strmbasd.lib、uuid.lib、winmm.lib。
(4)将DirectX SDK的Include和Lib目录配置到VC的系统目录中去,并且放在标准的VC目录之前,以保证编译器能够拿到最新版本的源文件。选择Tools(工具)|Options(选项)|Directories(目录),在弹出的对话框中的Show directories for(目录S)中选择Include files,配置如下(假设DirectX SDK安装在D:DXSDK目录下,VC安装在C:Program Files下):
D:DXSDKInclude
D:DXSDKSAMPLESC++DIRECTSHOWBASECLASSES
D:DXSDKSAMPLESC++COMMONINCLUDE
C:Program FilesMicrosoft Visual StudioVC98INCLUDE
C:Program FilesMicrosoft Visual StudioVC98MFCINCLUDE
C:Program FilesMicrosoft Visual StudioVC98ATLINCLUDE
再在Show directories for中选择Library files,配置如下:
D:DXSDKLib
D:DXSDKSAMPLESC++DIRECTSHOWBASECLASSESDEBUG /在第三步编译生成的,呵呵
D:DXSDKSAMPLESC++DIRECTSHOWBASECLASSESRELEASE
C:PROGRAM FILESMICROSOFT SDKLIB
C:Program FilesMicrosoft Visual StudioVC98LIB
C:Program FilesMicrosoft Visual StudioVC98MFCLIB
通过上面的几步,再加上把实例代码弄进VC中,就可以编译成功了!
上面的步骤我会上传一个视频到西瓜视频之中,请关注我的头条号:编程学与做。