VC6 下配置DirectShow SDK开发环境及下载地址

   1、首先下载DirectX 9 SDK开发包。这个现在还是比较难搞到的,可以到微软官网上去下载。在《关于DirectShow的杂想》一文中介绍过,自从DirectX 9.0c sdk后,DirectShow SDK不再包含在DirectX SDK中,而是以Extras的形式发布,后来集成了一部分SDK到Windows SDK中,也就是说后来的环境(比如vs2005、vs2008环境下)比较难配置,极有可能不稳定,产生这样那样的错误。初学者可能看到如此难搞的环境配置就望而却步了,不利于学习。所以还是在VC6.0或者VC++2003环境下配置DirectX 9.0 SDK。以下是几个包含DirectShow SDK的DirectX SDK的下载地址,是在我的SkyDirive里的共享文件。

   ①DirectX 9.0 SDK:

   http://cid-a76c4a4a3032ded0.skydrive.live.com/browse.aspx/.Public/DirectX%209.0%20SDK

   ②DirectX 9.0b SDK:

   http://cid-a76c4a4a3032ded0.skydrive.live.com/browse.aspx/.Public/DirectX%209.0b%20SDK

   ③DirectX 9 sum_2004(2004年夏天更新的版本):

        http://cid-a76c4a4a3032ded0.skydrive.live.com/browse.aspx/.Public/DirectX%209.0%20SDK%5E_sum2004

   2、编译 StrmBasd.lib/StrmBase.lib。打开SDK\Samples\C++\DirectShow

\BaseClasses\baseclasses.dsw 编译 debug/ release 版本,则会得到相对应的 strmbasd.lib/ strmbase.lib ,把他们复制到 SDK\lib 目录下。

    注意,可能SDK里的这个baseclasses工程里的默认配置是Debug_Unicode。要改成Debug/Release。方法:在工具栏上右击鼠标,选择组建,就可以选择配置。

 

   3、环境设置:
 
     VC Menu: Tools->Options: 
      ①、设置 include path: 把 SDK\INCLUDE 以及 SDK\SAMPLES\C++\

DIRECTSHOW\BASECLASSES 放到 include 路径顺序最前边;
      ②、 设置 lib path: 把 SDK\LIB 放到 lib path 最前边。

 

  4、问题解决:

    在编译samples里的ASFCopy例子里,编译提示找不到wmstub.lib。可以到我的skydrive里下载该lib(http://cid-a76c4a4a3032ded0.skydrive.live.com/browse.aspx/.Public/wmstub.lib);将wmstub.lib复制到...\Samples\C++\DirectShow\Common里。再编译,就OK了。

    在编译dsnet例子里,编译提示:  C:\DXSDK\Samples\C++\DirectShow\Filters\DSNetwork\filter\..\sender\propsend.rc(24) :

致命错误RC1121: RC : fatal error RC1121 : I/O error reading file

在Zhong Liyuan的博客里找到了解决方法。

    这是关于多国语言转换的问题,原来的程序是英文版,在中文版里面就有这个问题。因为在Microsoft Windows 下,语言用代 码 页来识 别,不同 语言 用不同代码 页来表示, 如" 简体中文" 用代码页936 表示, 而"  美国英 语" 则 用代码页1252 表 示。

       

解决方法:把英文版本改为中文版本。

打开...\DXSDK\Samples\C++\DirectShow\Filters\DSNetwork\filter,在这里有一个资源文件filter.rc,打开查看,可看到:

// Include the resources for the sender and receiver libraries
#include "..\sender\propsend.rc"
#include "..\receiver\proprecv.rc"

分别用文本文档打开上述两个资源文件(注意一定是文本文档哦!)

找到下面一段代码:

// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

将两个资源文件里的上述部分全部替换为成:
//  Chinese  (P. R. C.) resources

#if !defined(AFX_RESOURCE_DLL)  ||  defined(AFX_TARG_CHS) 
#ifdef  _WIN32 
LANGUAGE  LANG_CHINESE,  SUBLANG_CHINESE_SIMPLIFIED 
#pragma  code_page(936) 
#endif  //_WIN32

重新打开项目文件编译就ok了!!(这里谢了zhongliyong88师姐。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值