安装了DirectX SDK的系统为什么找不到"streams.h"头文件

请问:安装了DirectX SDK的系统为什么找不到"streams.h"文件
楼主thomasxue2002()2006-08-24 10:39:05 在 专题开发/技术/项目 / 多媒体/流媒体开发 提问
我安装的是DirectX   SDK   August   2006版,开发环境是Visual   Studio.NET   2003,项目组给我的示例程序中有"include   <streams.h>"语句,他们说"streams.h"是系统文件,可是我在硬盘上找不到streams.h文件,这是怎么回事呢?  
    在网上看了很多,说只要装上DirectX   SDK就可以了。为什么我的就不行了。很是郁闷,还请各位帮忙!问题点数:50、回复次数:6Top
1 楼thomasxue2002()回复于 2006-08-24 10:53:52 得分 0
没有人看看吗?我自己顶一顶!Top
2 楼Allen_zhang(影)回复于 2006-08-24 11:06:12 得分 0
还没有配置好吧?在vc6下面就要将sdk中的include和lib目录配置到系统目录中,要不也是提示找不到streams.h。在.net上面没有试过,google&baidu之  
   
  VC6.0的配置在陆老师的《dshow开发指南》中P67有讲得很清楚Top
3 楼thomasxue2002()回复于 2006-08-24 11:20:07 得分 0
我现在的问题不是VC编译环境找不到streams.h,而是在我的硬盘上根本就找不到streams.h这个文件,我怎么配置include和lib目录呢?Top
4 楼Allen_zhang(影)回复于 2006-08-24 14:13:36 得分 10
include目录:把下面三个路径加进去,并且把这三个升到最上面,下面的lib目录也一样  
  ……/DXSDK/Include  
  ……/DXSDK/Samples/C++/DirectShow/BaseClasses  
  ……/DXSDK/Samples/C++/Common/Include  
   
  lib目录:也要升到最上面  
  ……/DXSDK/Lib  
  ……/DXSDK/Samples/C++/DirectShow/BaseClasses/Debug  
  ……/DXSDK/Samples/C++/DirectShow/BaseClasses/Release  
  在lib这里还要对基类进行编译,在baseclass目录下的debug和release两个版本的编译  
   
  这样就应该行了,我这样用就不会再出现你上面的问题Top
5 楼wh_mimi()回复于 2006-08-25 12:41:30 得分 40
楼上的只说对了一部分,最重要   的是你要安装directx   9。0B的开发包,从9。0C开始directshow就不包含在里面了。。  
   
   
  一定要记得给我分哦。。。。我要40分。。。。。Top
6 楼thomasxue2002()回复于 2006-08-25 15:38:28 得分 0
楼上的言简意赅,指出了问题的实质,解决了我的问题!  
          感谢所有留言帮助我的朋友们!!!Top

本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/xuxc/archive/2008/09/16/2934995.aspx
DirectShow 在VS2005中环境配置
一.DirectShow的环境配置:
本人使用的是VS2005,要使用DirectShow进行编程,需要对环境进行必要的配置。

第一步:对E:/Microsoft DirectX9.0 SDK/Samples/C++/DirectShow/BaseClasses中的的baseclass.sln进行编译,生成需要的debug和release文件,具体步骤如下:
编译Debug    Release   Debug_Unicode   Release_Unicode四个版本,都需要进行额外的设置(头文件或者链接库目录设置)。


DirectShow的BaseClass中已经带了VS2005的工程文件baseclasses.sln,在vs2005中打开此文件,提示你进行必要的工程转换,转换之后开始编译,编译过程一般会出现下面几个问题:


(1)C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'


(2)error C4430: missing type specifier - int assumed. Note: C++ does not support default-int


(3)error C2065: 'Count' : undeclared identifier


第一类问题的解决:project->BaseClasses properties->configuration->C/C++ -> General->Additional Include Directories里面的内容(.,../../../../include)删掉,重新编译,PVOID64的错误消失,原因如下:
POINTER_64 是一个宏,在64位编译下起作用,它包含在SDK目录下的BASETSD.H中(Microsoft Visual Studio 8/VC/PlatformSDK/Include/basetsd.h(23):#define POINTER_64 __ptr64),但DXSDK自己也带了一个basetsd.h,里面没有定义POINTER_64,从而导致出错,只需要改变include files的优先级即可。。当然,也可以改写winnt.h中的代码,
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;
改成
typedef void *PVOID;
typedef void * POINTER_64;
typedef void * PVOID64;


第二类问题的解决:错误发生在:operator=(LONG);函数定义中,这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整形;但是vs2005不支持默认整形,解决这个问题不能修改每个没有显示指示返回值类型的函数地方,可以用wd4430来解决;具体的在工程选项中的c++/Command Line中添加/wd4430即可。
第三个错误发生在for循环中,vc6中for循环中定义的变量相当于在for外面定义,可以在for之外地方使用;但是vs2005for循环中定义变量相当于域{}变量,只能在for循环中使用。要解决这个问题,可以通过修改vs2005的工程选项:”Project Option” --– “ C++ ” —--  “Language” --- “Force Comformance in For Loop Scrope” 设置为No即可。
完成上面的设置,BaseClass工程基本可以编译通过了。

 

第二步:需要设置相应的配置
在把dxsdk中提供的baseclass编译通过后,用四种方式编译,会分别生成四个lib,一般只用到了其中的Debug和Release文件,在vs 2005 菜单栏中工具--选项 ---出现对话框---在左边选择“项目和解决方案” ---在右边平台中选择自己所在的平台   VC++目录包含的files中设置如下。
这里需要加入得include files有四种:
D:/SDK/DXSDK/Include
D:/SDK/DXSDK/Samples/C++/DirectShow/BaseClasses
D:/SDK/DXSDK/Samples/C++/DirectShow/Common
D:/SDK/DXSDK/Samples/C++/Common/Include

在后边的library files中也需要增加三到四种的文件:
D:/SDK/DXSDK/Lib
D:/SDK/DXSDK/Samples/C++/DirectShow/BaseClasses/Debug
D:/SDK/DXSDK/Samples/C++/DirectShow/BaseClasses/Release

把以上设置好,基本就可以将DirectShow程序在vs2005环境中编译通过。


部分转载于 http://blog.cnii.com.cn/?75821/viewspace-24418.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值