网站大量收购闲置独家精品文档,联系QQ:2885784924

VS2008编译DirectXSDK.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一. 第一步,设置INCLUDE及LIB目录 在把dxsdk中提供的baseclass编译通过后,用四种方式编译,会分别生成四个lib,一般只用到了 其中的Debug和Release文件,在tool|option|vc++ directories中包含的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 (这里可能是Common) (接下来才是VC原来的) 在后边的library files中也需要增加三到四种的文件: D:/SDK/DXSDK/Lib D:/SDK/DXSDK/Samples/C++/DirectShow/BaseClasses/Debug (基类编译前,这两个可以不设置) D:/SDK/DXSDK/Samples/C++/DirectShow/BaseClasses/Release (接下来才是VC原来的) 二. 第二步,编译BaseClasses基类 本人使用的是VS2005,要使用DirectShow进行编程,需要对环境进行必要的配置。 第一步:对dssdk中的baseclass.sln进行编译,生成需要的debug和release文件,具体步骤如下 : 在VS6中,安装DirectShow9c版本之后,直接打开BaseClass中的Vc6工程baseclasses.dsw文件, 直接编译即可,编译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循环中使用。要解决

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档