风云天下会攻略范文

2023-09-25

风云天下会攻略范文第1篇

知识普及:

DirectX9.0b(包含b)以下版本才有directshow,自从DirectX9.0c以后就从DirctX中分离了directshow了,所以要用directshow的人要注意,当然你也可以下载安装extras扩展包来弥补这一缺省。

缺少streams.h的解决方法

从网上下了DirectX 9.0 SDK,运行里面的的BaseClasses的时候出现了N多错误,在网上找到了相应的方法。http://blog.csdn.net/cocolovelove/article/details/353258

31. 编译基类源代码

BaseClasses编译生成

路径:/Samples/C++/DirectShow/BaseClasses

环境:VS2005/VS2008

为了正确编译,需修改以下文件:

(a) ctlutil.h

D:/DXSDK/Samples/C++/DirectShow/BaseClasses/ctlutil.h

编译时提示错误:

BaseClasses/ctlutil.h(278) : error C4430: 缺少类型说明符假定为 int。注意: C++ 不支持默认 int

改:

//static g_dwLastRefresh = 0;

static DWORD g_dwLastRefresh = 0; //lspmodify

(c) winutil.cpp

d:/DXSDK/Samples/C++/DirectShow/BaseClasses/winutil.cpp

错误:

1>./winutil.cpp(2104) : error C2065: “Count”: 未声明的标识符改:

//for (UINTCount = 0;Count < Result;Count++)

UINT Count; //lspmodify

for (Count = 0;Count < Result;Count++) { //lspmodify

(d) outputq.cpp

d:/DXSDK/Samples/C++/DirectShow/BaseClasses/outputq.cpp

错误:

1>./outputq.cpp(664) : error C2065: “iDone”: 未声明的标识符改:

(这里可能地方与VS报错不一样,需要自己向上找一下)

//for (longiDone = 0;

long iDone; //lspmodify

for (iDone = 0; //lspmodify

在DirectShow 8.0的SDK里面就看到有下面的头文件,在我装的是9.0的,没有找到这些文件。所以编译的时候修改完上面的就可以通过了。但要是装8.0的话就要修改了。

(我是到这部截至了因为我下载的是DirectX9.0b extras,所以如果您与我相同请直接向下看蓝字部分)

2、头文件修改

(a) winnt.h

d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h

在该文件头部添加:

#define POINTER_64 __ptr64 // add by peter lee

(b) vmr9.h

D:/DXSDK/Include/vmr9.h

MixerPref9_RenderTargetRGB= 0x1000,

MixerPref9_RenderTargetYUV= 0x00002000, //lsp add

3、VS2005/VS2008环境配置(一样的所以就以2008为例)

在vs2008下,选择菜单 Tools -> Options,左栏选择Projects and Solutions -> VC++ Directories

在弹出的对话框的"Show directories for"(显示以下内容的目录)中选择Include files(包含文件):文件路径看你自己安装的directshow位置

- include:

/Include

/Samples/C++/Common/Include

//我的工程中COMMON没有include ,我直接添加到C:DXSDKSAMPLESC++COMMON也成功了 /Samples/C++/DirectShow/BaseClasses

/WMFSDK9/include//这个我没加也可以

...

再在"Show directories for"中选择 Libraries files(库文件):

- lib:

/lib

/Samples/C++/Common/Src

/Samples/C++/DirectShow/BaseClasses/Debug_Unicode

//如果没有编译BaseClasses不会出现这个文件选项

/Samples/C++/DirectShow/BaseClasses/Release_Unicode

/WMFSDK9/lib//这个我没加也可以

修改完成啦,哈哈~~~编译通过了~~ DirectX9.0 只需要做第一步修改就可以了,但8.0就要三步都做完~~~晕倒~~

如果以上修改已经解决你的问题那么恭喜你,如果编译出现下图情况,那么恭喜你也成功了,只不过因为你编译的是lib和.h项目,你应该设置类似capture项目为启动项目,继续您后续的编程。

如果后续编程出问题,请向下看

(Debug_Unicode版)

缺少streams.h的解决方法和DirectShow开发环境的搭建

这个问题困扰我两天了,这是在参考了很多Debug 和Realse 版本的缺少streams.h的方案后,经过参考尝试后,获得了成功,现在拿出来供有需要的像做视频开发方面的人提供参考,绝对可以帮你省很多时间来处理有关DirectShow开发环境的搭建.重新配置一下include和lib以确保正确

1) 安装directX 9.0b sdk ,我安装在C盘下的DXSDK

2) 打开安装目录下的baseclasses.dsw,进行编译

其中第(2)是最重点的,下面我就主要详细说明这步的操作过程

1. 首先在baseclasses工程project-setting-library下设置output file name,设置为

Debug_Unicodestrmbasd_uni.lib,默认的为Debug_Unicodestrmbasd.lib。(这部我没做)

2. 编译工程,编译后会生成Debug_Unicode目录,里面就含有我们要的strmbasd_uni.lib

库。把它拷贝到你所要的项目工程目录下即可。(这部我也没做)

3. 在你所在的工程中,打开project-setting-link的Object/library modules下添加如下几

个库名,strmbasd_uni.libstrmiids.lib winmm.lib//这部我做了,这个VS与VC++不同VS2008是在右击启动项目——属性——链接(LINK)——输入中的依赖附加项中添加的

3)在VC++的Tools/Option/Directory的Include和Library中分别加入

C:DXSDKInclude

C:DXSDKSAMPLESC++DIRECTSHOWBASECLASSES

C:DXSDKSAMPLESC++COMMONINCLUDE//我的工程中COMMON没有include ,我直接添加到C:DXSDKSAMPLESC++COMMON也成功了

C:DXSDKLib

C:DXSDKSAMPLESC++DIRECTSHOWBASECLASSES Debug_Unicode(*)

4)在编译你工程前,在ProjectSettingLink 中加入 strmbasd_uni.lib uuid.lib winmm.lib

如果出现:dsound.h": No such file or directory

则在vs目录下搜索添加到baseclasses工程include目录下

(着重强调你的VS2008中的windsk必须安装的比较完整,否则会缺少很多东西,如果没有在你的VS2008中的安装包搜索,找到补丁安装即可)

(以下参考

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2617687&SiteID=1

)

如果出现:dxtrans.h": No such file or directory

则在整个工程中查找#include 的引用处做修改:

在#include 前加四项:

#define __IDxtCompositor_INTERFACE_DEFINED__

#define __IDxtAlphaSetter_INTERFACE_DEFINED__

#define __IDxtJpeg_INTERFACE_DEFINED__

#define __IDxtKey_INTERFACE_DEFINED__

#include

再修改qedit.h 中引用 dxtrans.h 的部分,要求注释掉

#include "oaidl.h"

#include "ocidl.h"

//#include "dxtrans.h"

#include "amstream.h"

注意:这样就可以正常编译连接了,如果以前的的程序还是不行,则 rebuild all 一下即可

如果出现1>LINK : fatal error LNK1181: 无法打开输入文件“strmbasd_uni.lib”

只能说明你的摄像机的驱动没装好。

希望我的整理对您有帮助,我调了两天,把directX的发展和VS2008的基本配置都弄的比较清楚了感觉收获很大。如果还有问题也欢迎邮箱mysteryrat@126.com探讨

上一篇:公安局长讲话稿范文下一篇:国家粮食储备库范文