Direct_show环境配置艰辛过程

      时至今天早上8点30分,我的Direct_show终于配置好了,不跳这个那个问题....................我这一个感动,不墨迹了跟大家说说我的配置过程,希望对以后学习的人有用。

       首先呢,我查了很多网上的资料加上我自己的试验,对于VC++6.0配置Direct_show环境来说下面的说明比较有用(其中大部分为前辈之作,少许我添加的说明,哈!)

DirectShow 1

1 DirectX SDK9

Directshow sdk 下载网址 :(说明此处的EXTRAS缺少一些头文件strsafe.h,可以通过安装dxsdk_aug2007添加)
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
#pragma comment(lib, "ole32.lib" )

 

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)调用的一一配对。

/

 

以上如果配置正确,编译时不会有任何缺少头文件的错误;

如果出现错误

1.fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include

2.missing ';' before identifier 'HSEMAPHORE'

上面的错误都是因为#pragma comment(lib,"strmbasd.lib")在stdafx.h,位置不正确引起的

 

编译通过后,在LINK时,弹出错误 LINK: fatal error LNK1104: cannot open file “C:/DXSDK/Lib/strmiids.lib",如果出现这个错误,则需要在C盘下新建一个文件夹,将所生成所有LIB和INCLUDE文件夹下的文件加入其中。

 

//

上面都是VC++6.0在配置DirectShow时的说明,通过一个用VS2005的朋友,他给我的资料,如果是给VS配置DirectShow时,可以查看网页http://blog.csdn.net/sunshine1314/archive/2006/12/13/1442103.aspx

你可能感兴趣的:(Direct_show环境配置艰辛过程)