使用dx9sdk为vs2008 搭建directx环境

来源:互联网 发布:阿里云最便宜服务器 编辑:程序博客网 时间:2024/04/30 09:23

一个DirectX程序要想正确的编译和链接,需要下面三个主要前提

一 安装DirectX SDK

二 正确配置.h文件路径和.lib文件路径

三 正确链接所需.lib文件


详细步骤如下:


一.安装DirectX SDK

http://msdn.microsoft.com/en-us/directx/aa937788       


二.正确配置.h文件和.lib文件路径


1. 启动VS,依次选择tools-option-projects and solutions-VC++Directories,在show directories for下面有几个选项

(这一步里也许会出现“VC++ 目录编辑功能已被否决”的情况,我们可以不采用这个方案进入vc++Directories,转而采用如下方案:

执行菜单栏中的<视图>--<属性管理器>,在新出现的“属性管理器”工作区中,点击项目->Debug|Win32->Microsoft.Cpp.Win32.userDirectories即可打开vc++Directories)

2. 选择Include files, 这个是DirectX头文件所在的地方,点击下面的新建文件夹按钮将DirectX头文件所在的路径输入进去。在我这里是

C:/Program Files/Microsoft DirectX SDK (March 2008)/Include

3. 选择Library fies,这是.lib文件所在的地方,如法炮制,将DirectX .lib文件的路径输入进去,在我这里是

C:/Program Files/Microsoft DirectX SDK (March 2008)/Lib/x86

到这里,如果你包含了所有所需的.h文件,你的程序编译应该没有问题,但是连接的时候你很可能会发现一大堆的unresolved external symbols...错误。因为你还没有链接lib文件

注意,以上是针对整个solution的设置,也就是说,以后创建的prject都将应用上面的设置,如果想针对project进行设置,那么请用下面的方法。

三.正确链接所需.lib文件

1. 在solution view中,右键点击你的工程,选择properties-configuration properties-linker-input-addtional dependencies

2. 点击右边的小按钮将下面这些常用的lib文件加入进去

dxerr.lib
dxguid.lib
d3dx9d.lib
d3dx10d.lib
d3d9.lib
winmm.lib
comctl32.lib



到这里,vs2010中DirectX开发环境的配置就完成了。


另外增加一点就是如果提示转换错误的话要在项目属性->配置属性->常规->字符集 中选择“使用多字节字符集”




error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)[转]

error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面) 来源:http://houjixin.blog.163.com/blog/static/356284102009112395049370/ DirectShow 2009-12-23 09:50:49 阅读311 评论0 字号:大中小打开winnt.h文件,发现问题就是在winnt.h头文件中无POINTER_64的定义造成的。搜索vc下的头文件,发现在basetsd.h头文件中有POINTER_64的定义,而在winnt.h头文件中也包含了该头文件。而在dxsdk9中也有basetsd.h头文件,而该文件无POINTER_64的定义,因此编译通不过。调整头文件搜索顺序后,编译也不行,原来在VC6目录里也有basetsd.h头文件,而该文件无POINTER_64的定义。可能因为VC6的Include目录在系统变量include里有,所以改变VS中的头文件搜索顺序不能解决问题。最后我吧winnt.h中的#include 改成"basetsd.h"就可以了。



error C2146: syntax error : missing ';' before identifier 'PVOID64'

error C2146: syntax error : missing &apos;;&apos; before identifier &apos;PVOID64&apos;
由 directdraw 的升级引起

在网上查了下资料,一般的解决方法是:

解决方法:在winnt.h中加上以下语句

#define POINTER_64 __ptr64

typedef void *PVOID;
typedef void * POINTER_64 PVOID64;

个人认为最好不去改winnt.h.
有时需要要调整include文件夹的顺序来解决问题,platform SDK中的winnt.h
DDK中的,vc6.0 自带的winnt.h有多个。 dxsdk 中的这些所用到的winnt.h版本不同。

通过调整IDE 工具-> 选项-> 项目vc++目录;包含文件include 的顺序来解决这类问题
使dxsdk需要的winnt.h所在文件夹在最上面。

可将其移动到include文件夹的最下面。


原创粉丝点击