Directx SDK9.0b 中的程序在VS2005中编译中的一些问题

Directx SDK9.0b 中的程序在VS2005中编译中的一些问题

DirectX SDK90b版本的例子BaseClasses在VS2005编译会有错。
1.operator=(LONG)错误
COARefTime(LONG);
//(LONG)operator=(LONG);
COARefTime& operator=(LONG);没有返回类型(winnt.h文件中)
2.VS2005中在循环里面定义变量的作用域问题。这是那行在有Count的for循环语句中出现的错误。
3.winnt.h文件里typedef void * POINTER_64 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,从而导致出错。
方法1:在Tools -> Options -> Projects and Solutions -> VC++ Directories -> Include Files里确保系统包含目录(以S打头的)在最前面,同时在 project properties下面的“C/C++ -> General”中确保“Additional Include Directories”为空(因为它会被优先编译,这样就轮不到VC\PlatformSDK\Include\basetsd.h),所有的包含目录都应该在上面的include里面。这种方法不用改代码。
方法2:
在DXSDK自己的basetsd.h里自己定义#define POINTER_64 __ptr64 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1482188

;