2009-11-10 0:28

此文章:自己编写 转载于《汤姆&杰瑞》

DirectShow 1 —— 下载与VC配置

1 DirectX SDK9

Directshow sdk 下载网址 :

http://download.microsoft.com/download/d/9/1/d91c44b9-fbac-4e8e-bee1-4a75777923ec/dxsdk_feb2005_extras.exe

在执行DirectShow样例时必须先用设置Visual C++编辑环境,要不然交会发生连接错误或者是找不到定义等等众多错误。设置直要是指定编绎器去查找程序所引用的头文件,库文件或者是资源文件的所在目录的路径

设置步骤:菜单条中的工具->选项->项目和解决方式->Vc++文件夹,然后就要以在右边的下拉框中选择可运行文件,头文件,库文件等待,这样就能够设置其所在文件的路径了。



所包括的文件可能放在:

1.DirctX 安装所在目录中的:Lib和Include目录中;

2.Platform 安装所在目录中的:Lib,Include,Samples\Multimedia\DirectShow\BaseClass,和Samples\Multimedia\DirectShow\Common文件里。



怎么确定项目所须要那些文件:

在SDK中查找编译出错,提示未定义的成员的帮助,看看它所须要那些头文件和库文件,就能够用#include 与#pragma comment 把它们引用代码文件里如

#include <dshow.h>

#pragma comment(lib, "ole32.lib" )



如里它所提供的样例没有存在VC++解决方式,而自己新建空解决方式把所提供的源文件加入进行,执行起来可能会遇到非常多难以想像的问题,由于它们NMAKE命令去生成项目。在生成过程中,它们文件这间有编译的前后顺序,并且有些文件要依懒于前一个编译生成的文件,所以要设置项目属性是非常复杂的,设置的不好非常easy出现各各样的编译错误。但你能够在在命令行中转到项目全部目录,执行命令:nmake /n ,查看生成项目所执行的命令。然后依据命令的信息而去设置新建项目的属性。你要正确去配置项目的属性,就必须了解这个命令nmake,CL.EXE,LINK.EXE,,RC.EXE;以下给出一些參考。



NMAKE命令选项參考

Microsoft 程序维护有用工具 (NMAKE.EXE) 是一个 32 位,基于说明文件里包括的命令生成项目的工具。

http://msdn.microsoft.com/library/c...ake_options.asp





CL.exe 选项说明

CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可运行文件 (.exe) 或动态链接库文件 (DLL)。



http://msdn.microsoft.com/library/c...habetically.asp



link命令选项參考:

LINK 是将通用对象文件格式 (COFF) 对象文件和库链接起来以创建 32 位可运行 (.exe) 文件或动态链接库 (DLL) 的 32 位工具



http://msdn.microsoft.com/library/c...r_reference.asp



CL.EXE 与link的关系

http://msdn.microsoft.com/library/c...ink_options.asp



RC命令

Microsoft Windows 资源编译命令,没有找到相关的资料,仅仅在命令行在输入RC /? 查看它自带的帮助了。



命令行中生成DirectShow SDK 中的样例

http://www.cnblogs.com/xuanfeng/arc.../04/494236.html

2 DirectX SDK8.1

(如果DirectX SDK8.1安装在C:\DXSDK文件夹下。)

1. 编译基类源码,至少生成两个静态库文件

打开C:\ DXSDK\samples\Multimedia\DirectShow\BaseClasses\baseclasses.dsw,Debug版本号生成strmbasd.lib,Release版本号生成strmbase.lib。



2. 配置VC的编译环境:Include文件夹和Lib文件夹。运行VC的菜单命令Tools | Options…,在随后弹出的对话框中进入Directories一页,在Show directories for一项选择Include files,然后配置例如以下:(注意,务必将DirectX SDK的文件夹放在标准的VC文件夹之前。)

C:\DXSDK\Include

C:\ DXSDK\samples\Multimedia\DirectShow\BaseClasses

C:\ DXSDK\samples\Multimedia\Common\include

C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

再在Show directories for一项选择Library files,配置例如以下:

C:\DXSDK\Lib

C:\ DXSDK\samples\Multimedia\DirectShow\BaseClasses \DEBUG

C:\ DXSDK\samples\Multimedia\DirectShow\BaseClasses \RELEASE

C:\PROGRAM FILES\MICROSOFT SDK\LIB

C:\Program Files\Microsoft Visual Studio\VC98\LIB

C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB



3. 配置DirectShow应用程序开发项目须要连接的库文件。

运行VC的菜单命令Project | Settings…,在随后弹出的对话框中进入Link一页,在Object/library modules一项,Debug版输入Strmbasd.lib Msvcrtd.lib Winmm.lib,Release版本号输入Strmbase.lib Msvcrt.lib Winmm.lib。Ignore default libraries. (In Microsoft® Visual C++® 6.0, choose Settings from the Project menu.
Click the Link tab and check Ignore all default libraries.)



4. 假设安装的DirectX SDK的版本号是9.0曾经的,请确认在编译应用程序的Debug版本号之前已经定义了DEBUG宏。运行VC的菜单命令Project | Settings…,在随后弹出的对话框中进入C/C++一页,在Category一项选择Preprocessor,然后确认Preprocessor definitions中有DEBUG(假设没有就自己加上)。

另外,应用程序在调用不论什么COM库函数之前,务必调用CoInitialize或CoInitializeEx进行COM库的初始化(一般仅仅需在程序启动的时候调用一次);在结束全部COM操作之后,调用CoUninitialize进行反初始化(一般在程序退出之前调用一次)。而当程序中有多个线程都要使用COM库函数时,则每一个线程都要进行初始化和反初始化。总之,要保证CoUninitialize和CoInitialize(或CoInitializeEx)调用的一一配对。

vc中关于 directx的配置,和dxsdk_extras(directshow)的更多相关文章

  1. vc有关 directx组态,和dxsdk_extras(directshow)

      2009-11-10 0:28 此文章:自己编写 转载于<汤姆&杰瑞> DirectShow 1 -- 下载与VC配置 1 DirectX SDK9 Directshow sd ...

  2. 在vc中使用xtremetoolkit界面库-----安装及环境配置

    近期想用一下xtremetoolkitPro界面库.网上的使用教程资源也不多,当中着实遇到了很多的困难,毕竟是首次使用. 首先当然是配置发开环境了: 我使用的是vc6.0+xtremetoolkitP ...

  3. VC中基于 Windows 的精确定时[转]

    在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位 机定时向下位机发送命令和传送数据等.特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要 ...

  4. VC++中操作XML(MFC、SDK)转

    [转]VC++中操作XML(MFC.SDK) XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++ ...

  5. VC++中操作XMLWin32实例

    摘要:VC++中操作XML XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++里操作XML有两个 ...

  6. VC中基于 Windows 的精确定时

    在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位 机定时向下位机发送命令和传送数据等.特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要 ...

  7. VS IDE 中Visual C++ 中的项目属性配置

    VS IDE 中Visual C++ 中的项目属性配置 一. Visual C++ 项目系统基于 MSBuild. 虽然可以直接在命令行上编辑 XML 项目文件和属性表,我们仍建议你使用 VS IDE ...

  8. VC中GetLastError()获取错误信息的使用,以及错误代码的含义

    转载:http://www.seacha.com/article.php/knowledge/windows/mfc/2011/0423/335.html VC中GetLastError()获取错误信 ...

  9. Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

    2017-2-23 Update: 修改并添加了部分细节 最近正在学习OpenCV ,为毕业设计做准备.Windows版本的OpenCV都默认提供对VS的支持,其在VS中的配置比较简单,网上也有大批教 ...

随机推荐

  1. HDU 2136 Largest prime factor

    题目大意:求出比给出数小的互质的质数个数. 题解:直接用筛法求素数,稍微改编一下,将原先的布尔数组变为数组用来记录信息就可以了. 注意点:大的数组定义要放在程序的开头,不要放在main里面,不然会栈溢 ...

  2. Sicily-1028

    一.        题意: 算出汉诺塔移动序列中对应位置的号码,数据规模很大,所以不能单纯递归,而是要找出汉诺塔序列的规律. 二.        汉诺塔数列 为了得出最少的移动步数,当n为偶数时,最上 ...

  3. Opencv 学习资料集合(更新中。。。)

    基础学习笔记之opencv(24):imwrite函数的使用 tornadomeet 2012-12-26 16:36 阅读:13258 评论:9 基础学习笔记之opencv(23):OpenCV坐标 ...

  4. html5 中的SVG 和canvas

    想到昨天看资料的时候,发现html5 中的SVG 和canvas 都可以表示图形,那它们到底有哪些区别呢?该如何正确的使用它们呢? 1.SVG:可缩放矢量图形,(Scalable Vector Gra ...

  5. foreach学习笔记

    对集合进行遍历 只能获取集合元素,但是不能对集合进行操作. 迭代器除了遍历,还可以进行remove的动作. 如果是用ListIterator,还可以在遍历过程中进行增删改查的动作. for(Strin ...

  6. 深夜,用canvas画一个时钟

    深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...

  7. Sticks(poj 1011)

    题目描述: Description George took sticks of the same length and cut them randomly until all parts became ...

  8. 如何正确的在java web配置数据池

    在tomcat context.xml中配置数据 <Context reloadable="true"> <!-- Default set of monitore ...

  9. hibernate 事务的隔离级别 5.1

    脏读不可重复读幻读可序列化(符合事务的四个特性的正常情况 ) 解释: 脏读:事务A对数据1做了更新,但是还没有来得及提交 此时事务B对数据1进行了查询获得了事务A更新后的数据, 但是事务A因为一些原因 ...

  10. github的.md格式文件

    md文件是github改良了markdown的语法,用来显示在项目首页的文件.在官方的网址说的很清楚: GitHub uses what we're calling "GitHub Flav ...