VC2005下编译DirectX出错问题解决
朋友介绍跨平台图形开发包SDL,下载下来在VC下编译进行编译,提示没有DirectXSDK,到M$网站上下载DirectXSDK,显示文件大小4xxMB, 被吓了回来,从别人机器上拷贝了DirectXSDK9.0的Include和Lib目录,只有2XMB, 汗,不知道M$是怎么做的文件,大小相差这么大。
添加相应的include路径到SDL编译环境中,重新编译,出现
….vc\platformsdk\include\winnt.h(222) : error C2061: 语法错误 : 标识符“PVOID64”
等问题。
使用google找到VS2005下编译DirectX程序时出现的类似编译问题,看到一位兄弟给了如下一种解释,觉得比较正确:
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
我采用了第二种方法。修改后,文件编译通过生成了期望的.lib库文件。
Popularity: 3% [?]