无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中

1、VS2008中无法打开ddraw.lib问题

1在新的机器上用VS打开某工程,编译提示:无法打开ddraw.lb,导致链接失败。

2回想之前的开发内容,应该是接入第三方的DVR设备,在视频解码的时候用到了DX的东西,所以出现这个依赖问题。

3)需要手动安装一个DXSDK开发包,然后将对应安装目录下的IncludeLib目录添加到VS,在VS2008中配置为:Tools/Options/Projects andSolutions/ VC++ Directories中添加Include和Lib目录,如下所示:

无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中_第1张图片

4在DDrawShow.h文件中定义了CDDrawShow类,类中使用到了ddraw相关的内容,添加了对ddraw.h的包含,引入了ddraw.lib库(在工程属性中配置的)。做(3)中的处理后就能正常的编译了。

 

2、VS2010中使用DX的问题

1将VS2008工程(还没添加DX的include和lib目录)转化成VS2010工程后,要将DX的include和lib目录添加到VS2010中,但是按配置路径:Tools/Options/Projects and Solutions/VC++ Directories,却找不到配置入口。在对应的页面中给出这样的提示:

无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中_第2张图片

应该是VS2010将此处的配置给废弃掉了,因为如果在此处配置,会默认添加到所有工程中,而有些工程是不需要使用DX的。后来发现,对应的配置项移到了工程的右键属性中去了,如下:

无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中_第3张图片

 

2在上图中的位置中,添加了DX的Include和Lib目录,如下所示:

无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中_第4张图片

但是接下里的编译又报出如下的错误:

无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中_第5张图片

双击错误,定位到如下的地方:


应该是没找到POINTER_64的定义,到网上得知,POINTER_64是定义在basetsd.h文件中,并且c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h文件中也包含了basetsd.h头文件,那为什么还报错呢?


无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中_第6张图片


3后来到DX90SDK的目录下也搜到了basetsd.h文件,该文件中没有POINTER_64的定义,奥,对了,以前将库添加到工程中有时是要讲究顺序的,


点击编辑,进去查看$(IncludePath)都包含哪些路径,如下:

无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中_第7张图片

果然包含windows sdk的路径:

c:\programfiles\microsoft sdks\windows\v7.0a\include\,应该是C:\DX90SDK\Include路径放到sdk路径前面去了,导致winnt.h使用的是DX中的basetsd.h文件,不是windows sdk中,DX的basetsd.h没有POINTER_64的定义,所以出现了这样的编译问题。

4在VC++目录中,将C:\DX90SDK\Include目录调整到$(IncludePath)后面即可,如下所示:(不能点击编辑,要手动修改,改变先后顺序)

无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中_第8张图片

你可能感兴趣的:(无法打开ddraw.lib问题的解决 -- 将DirectX引入到VS工程中)