关于DirectxShow实验

时间:2024-04-08 12:54:38

DirectxShow是什么我就不说了。有一本《DirectShow开发指南》书,写得不错,它也有配套的例子。 要重现它的例子,必须

第一步:安装DirectxShow相关的“框架”。

这个软件不好找,不过我把它做成了“DXShow开发版.rar”压缩文件。请评论本文后我就给出百度共享盘地址。

第二步:“DXShow开发版.rar”中又包含有几个压缩文件,请一直解压到不能再解为止,然后把其中的一个"Directx“文件压拷贝到 D: ,并将Dirctx目录名改名为:“DXSDK”。

关于DirectxShow实验

最后的目录与子目录是这样的

第三步:用VC6把D:DXSDKSamplesC++DirectShowBaseClasses工程进行编译。编译的目的是要生成两个lib文件:StrmBasd.lib/StrmBase.lib 。

Debug文件夹中的文件是: strmbasd.lib

Release文件夹中的文件是: STRMBASE.lib

注意啊,我在编译生成这两个文件时,基本上弄了几个小时哦!因为不管我如何更改工程的设置,都生成不了Debug和Release目录,它默认只生成Debug_Unicode目录。VC真TMD坑爹!

关于DirectxShow实验

在这里改设置是最大的坑

那么在哪里改呢?方法:在工具栏上右击鼠标,选择组建,就可以选择配置。

关于DirectxShow实验

这个方法有用哦!

只有这个方法才可以得到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中,就可以编译成功了!

上面的步骤我会上传一个视频到西瓜视频之中,请关注我的头条号:编程学与做。